2016-11-08 19 views
0

У меня есть 3 таблицы:VO и DAO, как проектировать классы и выполнить запрос

Item: item_id (pk), short_description, ... 
SupplierItem: item_id (fk), supplier_id (fk), vendor_product_number, ... 
Supplier: item_supplier (pk), name, ... 

связь между п и Поставщиком многие ко многим. SupplierItem промежуточная таблица.
Я хочу использовать VO и DAO.

Как это сделать в VO (Java)?

После чего, как я могу сделать следующий запрос в Java-коде.

select i.item_id, i.short_description, s.vendor_product_number as FONUA_PRODUCT_CODE 
from item i 
left join supplier_item s 
on i.item_id=s.item_id 
where ((i.item_id=:item_id) OR :item_id IS NULL) 
and i.parent_item_id is null 
order by vendor_product_number DESC" 

Я до сих пор не понимаю концепцию использования VO и DAO.

Благодаря

ответ

0

DAO будет Java-файл, в котором вы определяете ваш запрос и получить результаты вызова запроса в базе данных. Результаты запроса будут сохранены путем установки их в качестве значений для свойств конкретного VO.

Для примера:

Ваш запрос возвращает,

  • item_id, SHORT_DESCRIPTION, vendor_product_number

Так давайте скажем, что вам придется создать еще один файл Java сказать ItemVO. java и объявить конкретные свойства объекта ItemVO, Для примера:

private String itemId; 
private String shortDescription; 
private String vendorShortNum; 
/*Define your getters and setters*/ 

В файле DAO вам необходимо сопоставить результаты запроса с объектами файла VO.

ItemVO itemVO= new ItemVO(); 
itemVO.setItemId(/*the particular column value from the query result*/); 
itemVO.setShortDescription(/*the particular column value from the query result*/); 
itemVO.setVendorShortNum(/*the particular column value from the query result*/); 
+0

Нужно ли создавать промежуточную таблицу? (SupplierItem) Как я представляю эти отношения? – Ricardo

+0

Нет, вам это не нужно, даже если вы решили получить новый столбец с этим запросом, вы можете просто добавить новое свойство в VO и установить его из запроса. Результат – GraveyardQueen

+0

, если вы вставляете что-то в таблицу, тогда вы должен будет использовать что-то вроде hibernate, чтобы показать взаимосвязь между таблицами, например: таблица 1 будет затронута, а таблица 1 будет иметь отношение к таблице 2, а некоторые столбцы таблицы 2 также будут затронуты в этом случае. использовать другую технологию отображения, такую ​​как спящий режим – GraveyardQueen