контроллеры, классы сущностей или dao - что куда идет?

С введением Hibernate в моем проекте мой код стал действительно связанным и шаблонным во многих местах (и все должно быть наоборот, не так ли?)

Я довольно запутался в конкретном примере. Я всегда считал объекты DAO довольно универсальными по своей природе (в основном инкапсулирующие основные операции CRUD, а также реализацию внутреннего хранилища)

К сожалению, по мере того, как мои классы сущностей стали усложняться, я начал разгружать все больше и больше логику к объектам DAO. У меня есть конкретный пример:

у моего класса сущности User должно быть отношение под названием friends, которое по сути является совокупностью пользователей. Однако вместо этого я должен сопоставить свой класс с коллекцией объектов UserFriendship, каждый из которых содержит ссылку на объект friend, а также другие конкретные данные о дружбе (дату, когда возникла дружба)

Теперь легко ввести пользовательский метод получения в класс сущности, который будет принимать коллекцию объектов UserFriendship и вместо этого превращать ее в коллекцию объектов User. Однако что, если мне нужна только часть коллекции моих друзей, скажем, как при подкачке страниц. Я не могу сделать это в объекте сущности, потому что у него нет доступа к сеансу, верно? Это также относится к случаям, когда мне нужно сделать параметризованный запрос отношения. Тот, у кого есть доступ к сеансу, - это UserDAO. Итак, я получил этот

UserDAO => обычные методы CRUD => getFriends (Целочисленное смещение, Целочисленный предел); => куча похожих геттеров и сеттеров, отвечающих за управление отношениями внутри экземпляра User.

Это безумие. Но я больше ничего не могу сделать. Я не знаю, можно ли объявить вычисляемые свойства в классах сущностей, которые также можно параметризовать.

Технически я мог бы также обернуть DAO внутри сущности и поместить вспомогательные геттеры и сеттеры обратно в класс сущности, где они должны быть, но я не уверен, является ли это хорошей практикой.

Я знаю, что доступ к DAO должен иметь только объект контроллера, и он должен предоставлять более или менее полный объект-сущность или набор объектов-сущностей.

Я глубоко сбит с толку. Более или менее все мои объекты DAO теперь связаны логикой, которая должна быть либо в объектах Entity, либо в контроллерах.

Прошу прощения, если мой вопрос немного сбивает с толку. Его немного сложно сформулировать.

5
задан user802232 13 July 2011 в 16:20
поделиться