Где (в каком слое) разместить методы запросов Entity, методы «persist» и т. Д. - PullRequest
1 голос
/ 08 октября 2008

У меня есть приложение SEAM с несколькими JPA / Hibernate сущностями. И теперь мне интересно, куда поместить мой запрос, методы персистентности.

Кажется, что выбор по умолчанию помещает их в слой сессионного компонента с внедренным

@PersistenceContext(...) @Inject EntityManager entityManager;

Но я думаю, что я предпочел бы иметь методы на самих сущностях. Какие плюсы / минусы?

  1. Testablity
  2. любезность?
  3. Производительность

И есть ли у кого-нибудь ссылки на лучшие практики взаимодействия с EntityManager и т. Д. Из методов сущностей, а не сессионных компонентов?

Лучший, Андерс

Ответы [ 2 ]

2 голосов
/ 08 октября 2008

У меня нет опыта работы с SEAM, но, исходя из опыта работы с проектами Java, я обнаружил, что проще всего избежать бобов от постоянных методов. Что мы обычно делаем:

  • Иметь компоненты для бизнес-объектов (например, "Пользователь" и "Настройка")
  • Иметь слой DAO, который может сохранять и извлекать эти бины (простой CRUD)
  • Иметь сервисный уровень, который теперь показывает, как обрабатывать бины, и, возможно, даже как построить совокупность бинов

Таким образом, все довольно разделено, и его легко протестировать. При такой настройке производительность обычно не является проблемой.

1 голос
/ 08 октября 2008

Да, это то, что я делал раньше.

В общем, я думаю, EJB безумно многословен и нагляден, но SEAM на самом деле немного помогает, поэтому в моем текущем проекте дополнительный слой сессионных компонентов просто для запроса и сохранения раздражает меня. У меня такое чувство, что я мог бы сделать достаточно лаконичное приложение, если бы мог убить этот слой ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...