2010-07-14 2 views
4

Мне было интересно узнать о возможностях Session Beans в EJB 3 и можно ли их заменить в типичном среднем корпоративном приложении Spring.Session Beans и EJB3 vs Spring

Я нашел эту статью: http://drag0sd0g.blogspot.com/2010/01/session-bean-alternative-spring.html , что говорится следующее:. «Из-за интенсивного использования аннотаций, вы можете в значительной степени избежать„XML Hell“с использованием EJB 3, то же самое нельзя сказать весны Кроме того , поскольку он является неотъемлемой частью стандарта Java EE, контейнер EJB изначально интегрирован с такими компонентами, как JSF, JSP, сервлеты, транзакция JTA , поставщики JMS и поставщики безопасности JAAS вашего сервера приложений. С Spring, вы должны волноваться, полностью ли поддерживает ваш сервер приложений фреймворк с этими родными компонентами и другими высокопроизводительными функциями, такими как clust , балансировка нагрузки и переход на другой ресурс. Если вы не беспокоитесь о таких вещах, то весна не плохой выбор на всех»

Согласны ли вы с этим утверждением? Безгосударственный Sessions Фасоль, используемая для рассмотрения очень мощной технологии предприятия из-за объединение и возможности управления. Мой вопрос: когда действительно необходимо использовать EJB 3 вместо или в дополнение к Spring (при условии, что это критически важное корпоративное приложение в крупной компании)?

+0

См. Http://stackoverflow.com/questions/68527/should-i-use-ejb3-or-spring-for-my-business-layer – skaffman

+4

«Из-за интенсивного использования аннотаций вы можете в значительной степени избегать», XML Hell ", используя EJB 3, о том же нельзя сказать о Spring. Это неверно, вы можете настроить весну только с аннотациями и Java-кодом, но тем самым вы тесно связываете приложение с весенним фреймворком, и вы теряете удивительные функции управления бобами Eclipse Spring IDE. XML не ад с весной, если вы используете правильные инструменты. –

+0

«Из-за интенсивного использования аннотаций вы можете в значительной степени избегать« XML-ада »- теперь у вас есть« Аннотации ад ». –

ответ

2

Не думаю, что существует много случаев когда использование EJB 3 вместо Spring абсолютно необходимо, но бывают случаи, когда использование EJB 3 будет значительно проще. Как говорится в статье, основными преимуществами EJB являются интеграция с другими технологиями JEE s, а с EJB 3 Enterprise Beans намного проще писать, чем в предыдущих версиях спецификации.

Классическая причина использования EJB over POJO или других технологий промежуточного программного обеспечения - это транзакции. Если ваша бизнес-логика должна быть транзакционной, EJB обеспечивает простую декларативную трансграничную демаркацию и бесшовную интеграцию с JTA через контейнер. Хотя в статье предлагается, что поддержка кластеризации, балансировки нагрузки и управления производительностью является преимуществом, это очень зависит от вашего выбора сервера приложений JEE.

Я бы сказал, что ключевым фактором при выборе использования Spring или EJB 3 является ваш контейнер. Если ваш целевой контейнер является полностью совместимым с JEE 5+ сервером приложений, и вам нужна поддержка таких сервисов, как транзакции или обмен сообщениями, то EJB 3 является очевидным выбором. Если, однако, вам не нужно интегрироваться с другими технологиями JEE или развертывать их на легком сервере приложений, тогда использование EJB просто добавит лишние накладные расходы.

7

Похоже, еще один Java EE против Spring пост ...

EJB/Java EE и Spring теперь два зрелых, конкурентоспособных Java на основе технологии стеки. Часто нет причин усложнять вещи и смешивать их. EJB на самом деле научился и использовал множество идей от Spring et al.

Ни один из них не приводит вас в аддон XML/конфигурации. Оба довольно легко начать, по крайней мере, с самого элементарного материала.

Весна больше, чем просто IoC/SOA/транзакции. Это больше похоже на панель инструментов - она ​​готова интегрироваться или напрямую обеспечивать инфраструктуру ORM и транзакций, web/MVC, безопасность, таймеры/планирование и т. Д. Вы можете выбрать именно те части, которые вам нужны. Вы не должны использовать контейнер (вы можете использовать его в своем автономном приложении «desktop»).

EJB является частью стека Java EE. Это, ну, стандарт.Это не так широко, гибко, как Spring, но по определению поддерживается всеми контейнерами Java EE.

Я предпочитаю весну для свободы и на шаг впереди.

0

Как кто-либо может подумать, что определение модели данных EJB3 с использованием серии аннотаций java, распространенных по нескольким классам, превосходит синтаксис простой синтаксической модели Hibernates.

Его кошмар ремонтируемости. Почему у вас есть таблица пересечений? Он может быть определен почти везде в базе кода. Некоторые младшие программисты играют с аннотациями, и теперь ваши классы Java не синхронизируются с фактической базой данных.

Получил проблемы с производительностью (и вы будете). Вы не только получили классический Hibernate «Я не знаю, какой SQL он использует», у вас также есть проблема «Я не знаю, почему эта таблица была построена как эта».