Где выставить результаты конкретного SQL-запроса в доменной модели - PullRequest
0 голосов
/ 07 июня 2009

Какой из этих примеров будет лучшим способом раскрыть коллекцию Приказов для конкретного Лица, содержащего конкретный Продукт, и почему? Или, может быть, есть лучший способ сделать это вообще? (Извините, я новичок в области моделирования). Список заказов извлекается из базы данных с помощью SQL-запроса и превращается в коллекцию списков.

У человека есть 1 ко многим Орденам, а у Ордена - 1 ко многим Продуктам.

1)
<code>
class Person
{
    List OrdersContaining(Product p)
    {.....}
}
</code>
2)
<code>
class Order
{
    List ForPersonContainingProduct(Person person, Product product)
    {.....}
}
</code>
2)
<code>
class Product
{
    List OrdersFor(Person p)
    {.....}
}
</code>

Ответы [ 2 ]

1 голос
/ 07 июня 2009

Я бы не стал подвергать такой метод непосредственно самому объекту домена, который инкапсулирует данные. Скорее, я бы использовал шаблон DAO, примененный к домену Order. Что, по сути, является вариацией вашего # 2:

class OrderDAO {
    List<Order> listByPersonAndProduct(Person person, Product product){
        .....
    }
}

Таким образом, различные шаблоны доступа, которые необходимо добавить со временем, отделены от объекта домена Order.

0 голосов
/ 11 июня 2009

Человек все еще может иметь коллекцию .Orders, которая имеет все свои заказы. Тогда это становится вопросом ленивой загрузки этой коллекции, когда вы знаете, что она вам понадобится. Что-то вроде N / Hibernate очень помогает здесь.

...