EJB3 или "Spring3 + Hibernate", который подходит - PullRequest
6 голосов
/ 09 августа 2011

В EJB3 и Spring 3 очень много общего с hibernate.Мне нужно выяснить, где я могу использовать Spring Framework с Hibernate, а не EJB3 и наоборот.

Ответы [ 2 ]

9 голосов
/ 17 августа 2011

Они оба довольно похожи.См. Также этот вопрос: EJB 3.1 или Spring 3. Когда выбрать какой из них?

Если вы используете EJB, вы можете выбрать таргетинг на Java EE.Это означает, что вам не нужно включать дополнительные WAR-файлы в вашу WAR, так как целевая среда уже поддерживает EJB.Сравните это с таргетингом на Java SE, где вам не нужно включать классы, такие как ArrayList и HashMap, в ваш jar, поскольку у любой среды выполнения Java SE такие уже есть.

Конечно, вы также можете включать EJB jar в вашприложение, которое удобно, если вы хотите настроить таргетинг на контейнеры сервлетов, такие как Tomcat или Jetty.В этом случае OpenEJB, вероятно, является лучшим выбором, но любая реализация EJB может запускать свой контейнер во встроенном режиме (это требование спецификации EJB) и может использоваться в Java SE.

Существует также версия EJBэто даже легче, чем полный EJB.Это называется EJB3-lite и поддерживается такими серверами, как Glassfish Web Profile и Resin.Они оба чуть больше, чем голые Tomcat (Resin - 23 МБ) и дают вам полный стек из коробки.

Я лично считаю, что EJB3 лучше Spring.Это менее сложный и менее тяжелый вес.EJB3 начал революцию, требуя только простых аннотаций и строго придерживаясь соглашения о конфигурации.Исторически Spring требовал огромных объемов XML даже для самых простых вещей.Однако Spring учился у EJB и теперь применяет тот же подход.

В конце концов, обе являются зрелыми и хорошими технологиями, и вы не ошибетесь ни с одной из них (просто избегайте их смешивания,если только вы не обязаны).

9 голосов
/ 09 августа 2011

Вы можете использовать их взаимозаменяемо.

Если вы используете EJB3, вам потребуется полноценный сервер приложений Java EE, EJB3. Некоторые бесплатны, некоторые нет.

Если вы используете Spring 3, вам нужно иметь Spring JAR в CLASSPATH, но полноценный сервер приложений Java EE не требуется. Tomcat или Jetty достаточно, в зависимости от ваших потребностей.

Существует несколько поставщиков для реализации EJB3; В конце концов, EJB3 - это просто спецификация. Для Spring есть только один продавец.

Лично я предпочитаю весну. Я пользуюсь им шесть лет, начиная с версии 1.0, с большим успехом. Это очень качественный каркас. EJB3 многое взял из уроков, извлеченных Spring и Hibernate. Я думаю, что аспектно-ориентированное программирование Spring лучше, чем то, что было добавлено в EJB3. Другие модули (например, безопасность, LDAP, веб-сервисы и т. Д.) Превосходны.

...