В EJB3 или нет?

У меня есть сценарий архитектуры, и я хотел бы обсудить его, чтобы узнать ваше мнение.

Я могу выбирать между этими двумя (это ограничение наложено на меня)

  1. Используйте EJB3+JPA — без Spring/Hibernate
  2. POJO + JDBC - снова нет Spring/Hibernate

У меня есть ряд веб-приложений (только интранет), которые необходимо интегрировать. На уровне базы данных будет от 3 до 4 баз данных оракула (и от 40 до 50 таблиц на базу данных). Некоторые приложения могут взаимодействовать с несколькими базами данных для некоторых запросов. Количество одновременно работающих пользователей будет меньше 100. Количество пользователей/аудитории на приложение будет варьироваться от 10 до 6000 (макс.).

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

Большинство вариантов использования будут основаны на CRUD (некоторые могут предложить хорошую модель предметной области для ORM, а другие нет), с некоторыми бизнес-процессами, автоматизированными заданиями и т. д. В будущем может возникнуть необходимость интеграции с SAP для некоторых приложений.

Как вы думаете, EJB3 в этом случае сделает приложение более масштабируемым или просто добавит сложности? Если я разрабатываю с POJO, будет ли это приложение, которое я не хочу добавлять сложности без уважительной причины. Я пытался лоббировать Spring и Hibernate, но безуспешно.

дайте мне знать, если вам нужна дополнительная информация.

РЕДАКТИРОВАТЬ: я забыл упомянуть сервер приложений. это БЫЛО 7.


person Shaw    schedule 09.07.2009    source источник


Ответы (8)


Я не понимаю, как можно разрешить JPA, а Hibernate — нет. Это не имеет большого смысла, учитывая, что Hibernate — это реализация JPA. Подойдет ли другая реализация JPA, например OpenJPA?

Вы не упомянули, есть ли у вас существующий сервер или вы будете устанавливать свои приложения на еще не выбранный сервер. Это решение уже принято? Если да, то это может повлиять на ваш выбор. Полный современный сервер JavaEE будет поставляться с реализациями EJB3 и JPA.

Если сервер не поддерживает EJB3, то EJB3 гораздо менее привлекателен.

Но если разумные технологии, такие как Spring и Hibernate, были исключены, всегда есть простые фреймворки, такие как iBatis, которые позволяют комбинировать POJO с JDBC.

person skaffman    schedule 09.07.2009
comment
WAS7, похоже, является сервером приложений JavaEE 5, и в этом случае он имеет встроенную поддержку EJB3 и JPA. Вы не должны нуждаться в Hibernate. Вы должны, по крайней мере, использовать поддержку JPA на сервере, хотя менее очевидно, используете ли вы EJB3 (EJB3 и JPA дополняют друг друга, но вы можете использовать JPA отдельно). - person skaffman; 09.07.2009
comment
Спасибо, что поделились своим мнением :-) - person Shaw; 09.07.2009

EJB и JPA — это просто интерфейсы; вам все равно понадобится кто-то для их реализации. Так что, если Spring+Hibernate невозможен, то это означает, что нет JPA, если вы не можете получить одобрение для другого фреймворка (... эээ... Toplink, может быть? Есть ли что-нибудь, чего нет? На основе гибернации?)

Если вы застряли с POJO и JDBC, я предлагаю взглянуть на Grails. Это сделает вашу жизнь намного проще.

person Aaron Digulla    schedule 09.07.2009
comment
Поставщики серверов приложений, как правило, предоставляют реализации EJB3/JPA — для WebSphere это v7.0 и в пакете функций EJB3 для 6.1 и - person djna; 09.07.2009

Первый уровень обсуждения — это сравнение {POJO + JDBC, запись постоянства вручную} с {фреймворком для постоянства}. (Я также подозреваю, что в конечном итоге вам понадобятся интересные сервисы, поэтому я думаю, что EJB3/SLSB или эквивалент Spring уместны, даже если вы должны были свернуть свою собственную настойчивость).

Поэтому я считаю, что технологии сохраняемости (JPA или Hibernate) сейчас находятся на таком уровне, что вам нужна веская причина не их использовать. ручная прокатка JDBC - это просто рутинная работа, которую не нужно делать вручную.

Что касается дебатов JPA против Hibernate и Spring против EJB3, я очень двусмыслен, кажется, это область с большой религией.

person djna    schedule 09.07.2009
comment
В дебатах нет спящего режима/весны. Его нельзя использовать. Это между EJB3+JPA и никаким. Я хотел бы знать, собираюсь ли я усложнить ситуацию, выбрав EJB3. Если бы мне разрешили SPring+Hibernate, я бы не задавал здесь этот вопрос :-) - person Shaw; 09.07.2009
comment
Я считаю, что JPA и спящий режим предлагают одинаковые уровни абстракции, и что использование любого из них предпочтительнее, чем JDBC. Что касается EJB3, как механизма предоставления услуг, я считаю, что он накладывает незначительные накладные расходы по сравнению с POJO, и выигрыш с точки зрения транзакций и безопасности того стоит. - person djna; 09.07.2009

Хотя ваши ограничения несколько противоречивы (в конце концов, Hibernate - это реализация JPA), я бы посоветовал вам принять стандартное решение. Если ваш единственный выбор - это стандартный стек, такой как EJB3/JPA, по сравнению с реализацией POJO/JDBC, созданной вручную, я бы сказал, что лучше использовать EJB3.

Когда вы выберете путь POJO/JDBC, вы, вероятно, в конечном итоге создадите свой собственный Spring-подобный, но менее многофункциональный и менее хорошо протестированный фреймворк. Разработчикам приложений вряд ли когда-либо будет оправдано написание пользовательской среды.

person Richard Kettelerij    schedule 09.07.2009

Просто перейдите на EJB+JPA!

Я предполагаю, что вы застряли в какой-то «корпоративной» среде и не можете использовать фреймворки с открытым исходным кодом.

person Deian    schedule 01.07.2010

WAS 7 по умолчанию имеет реализацию OpenJPA. Весна+

person kalyan    schedule 06.05.2013

EJB3 + JPA заставит вас работать очень просто. Он хорошо масштабируется и очень прост в настройке и использовании друг с другом. Создание сущностей - самая сложная часть, но после этого все становится мудрым (особенно, если вы используете отношения сущностей). Я использовал spring и hibernate на 4 года, и да, они превосходны, если у вас нет сервера приложений. Но пока у вас есть WAS 7.0, я рекомендую использовать EJB+JPA.

Работать с JPQL намного проще и разумнее для Java-программистов. Однако; вы не можете вызывать хранимые процедуры, если не используете JPA 2.1, который поддерживается только в WAS 8.5.

person Community    schedule 29.11.2013

Ответ прост: если jboss/glassfish, используйте EJB3, если tomcat, используйте чистый JPA или данные Hibernate или Spring.

EJB3 против спящего режима? конечно EJB3. Вы должны знать, что EJB3 под jboss использовал hibernate, EJB3 под Glassfish использовал eclipse link JPA.

person Armen Arzumanyan    schedule 24.10.2014