Когда использовать POJO и когда использовать SLSB - PullRequest
1 голос
/ 28 марта 2009

мы используем EJB3 в нашем приложении. Наша цель - отделить персистентный слой от бизнес-уровня. Итак, мы разработали классы XXXbean для использования в качестве классов SLSB и XXXRepository для использования в качестве классов персистентности. У нас также есть POJO, который реализует повторно используемую бизнес-логику NON (получить список стран и т. Д.), И мы затем вызываем классы service / helper.

Мы используем EJB3 JPA (с использованием провайдера Hibernate), а в классах Repository есть все методы для работы с CRUD и методы get для доступа к данным. В настоящее время все классы XXXRepository представляют собой POJO, и мы создаем их экземпляры непосредственно из бинов XXXClasses или из служебных объектов.

Должны ли классы XXXRepository быть SLSB? Каковы будут преимущества и недостатки их преобразования в SLSB?

1 Ответ

0 голосов
/ 02 марта 2010

EJB - это управляемый контейнером компонент. Это означает, что контейнер управляет множеством параметров, таких как транзакция, безопасность, доступ к ресурсам (например, база данных), и предлагает такие возможности, как таймеры, удаленный доступ или перехватчики. Еще одним преимуществом является пул и повторное использование экземпляров.

Я бы сказал, что если вам нужно что-то из опций, управляемых этим контейнером, например, менеджер сущностей, то используйте EJB, в вашем случае SLSB. Но если вам не нужны какие-либо из предоставленных функций, то обычный POJO сделает эту работу.

Если классы XXXRepository не являются SLSB, как они получают доступ к базе данных для выполнения операций CRUD? Используете ли вы сеанс Hibernate напрямую? Как управляются транзакции? В этом случае может иметь смысл преобразовать эти классы в SLSB и использовать менеджер внедренных сущностей.

Адам Бьен написал книгу под названием Реальный мир Java EE Pattern . В этой книге он пишет о хороших архитектурах EJB, а также упоминает, какие классы должны быть EJB (например, ServiceFacade в качестве границы транзакции) и какие классы можно использовать в качестве POJO.

...