Куда (на каком уровне) поместить методы запроса сущности, методы “сохранения” и т.д.?
Вопрос
У меня есть приложение SEAM с некоторыми объектами JPA / Hibernate.И теперь я задаюсь вопросом, куда поместить мой запрос, методы сохранения.
Выбор по умолчанию, по-видимому, помещает их в сеансовый компонент layer с введенным
@PersistenceContext(...) @Inject EntityManager entityManager;
Но я думаю, что предпочел бы использовать методы для самих объектов.Каковы "за" / "против"?
- Проверяемость?
- Любезность?
- Производительность?
И есть ли у кого-нибудь ссылки на лучшие практики взаимодействия с EntityManager и т.д.из методов на объектах, а не из сеансовых компонентов?
Лучший, Андерс
Решение
У меня нет опыта работы с SEAM, но, исходя из моего опыта работы с Java-проектами, я обнаружил, что проще всего держать beans подальше от методов persist.Что мы обычно делаем:
- Есть компоненты для бизнес-объектов (например, "Пользователь" и "Настройка")
- Есть слой DAO, который может сохраняться и извлекать эти компоненты (простой CRUD)
- Имейте уровень обслуживания, который показывает, как обрабатывать компоненты и, возможно, даже как создавать совокупность компонентов
Таким образом, все довольно разделено, и его легко объединить.Производительность обычно не является проблемой при такой настройке.
Другие советы
Да, это тоже то, что я делал раньше.
В целом, я думаю, EJB безумно многословен и шаблонен, но SEAM на самом деле немного помогает, вот почему в моем текущем проекте дополнительный слой сеансовых компонентов просто для запроса и сохранения меня раздражает.У меня такое чувство, что я мог бы создать достаточно краткое приложение, если бы смог уничтожить этот слой...