С введением Hibernate в моем проекте мой код стал действительно связанным и во многих местах стал образцом (и должно быть наоборот), *?
Я был довольно смущен конкретным примером. Я всегда считал объекты DAO достаточно общими по своей природе (в основном инкапсулируя основные операции CRUD, а также реализацию хранилища бэкэнда)
К сожалению, когда мои классы сущностей стали усложняться, я начал все больше и больше загружать логику в объекты DAO. У меня есть конкретный пример:
Мой класс сущности Пользователь должен иметь отношение, называемое друзьями, которое, по сути, представляет собой совокупность пользователей. Однако вместо этого я должен сопоставить свой класс с коллекцией объектов UserFriendship, каждый из которых содержит ссылку на объект друга, но также и другие конкретные данные дружбы (дату, когда произошла дружба)
Теперь в класс сущности легко ввести пользовательский метод получения, который возьмет коллекцию объектов UserFriendship и превратит ее в коллекцию объектов User. Однако, что если мне понадобится только часть моей коллекции друзей, скажем, как в пейджинге. Я действительно не могу сделать это в объекте сущности, потому что у него нет доступа к сеансу, верно? Это также относится к тому, когда мне нужно сделать параметризованный запрос на отношения. Тот, кто имеет доступ к сеансу, является UserDAO. Итак, я закончил с этим
UserDAO
=> обычные методы CRUD
=> getFriends (целочисленное смещение, целочисленный лимит);
=> группа похожих методов получения и установки, отвечающих за управление отношениями в экземпляре User.
Это безумие. Но я не могу больше ничего делать. Я не знаю, возможно ли объявить вычисленные свойства в классах сущностей, которые также можно параметризовать.
Я мог бы также технически обернуть DAO внутри сущности и поместить вспомогательные средства получения и установки обратно в класс сущности, где они должны быть, но я не уверен, является ли это хорошей практикой.
Я знаю, что к DAO должен обращаться только объект контроллера, и он должен предоставлять более или менее полный объект сущности или набор объектов сущности.
Я глубоко сбит с толку. Более или менее все мои объекты DAO теперь объединяют логику, которая должна быть либо в объектах Entity, либо в контроллерах.
Извините, если мой вопрос немного сбивает с толку. Сложно это сформулировать.