Мы используем объектные компоненты EJB2.x с BMP (постоянство, управляемое компонентами). Похоже, что BMP не поддерживается в EJB3. Мы хотели оставаться в курсе и перейти на EJB3. Кто-нибудь знает, есть ли на самом деле какие-либо варианты BMP, доступные в 3.0?
Из того, что я могу сказать, используя 3.0, все компоненты управления данными должны использовать JPA и по определению ORM. Есть несколько вариантов использования собственного SQL, но это всего лишь способ использовать JPA для реализации ORM.
Я не был уверен, существует ли другой подход EJB3 для достижения той же функциональности, что и у объектных компонентов EJB2.x BMP. В настоящее время мы используем стандартный метод ejbStore для обновления БД с помощью собственного SQL и метод ejbLoad для поиска всех bean-компонентов и обновления bean-компонента в случае отката транзакции. Я думал, что вы сможете сделать это с помощью сессионных компонентов EJB3, но не был уверен.
Возможно, вместо перехода на компоненты EJB3 нам следует перейти на Spring.
Кстати, мы тоже используем BMP 2.1, и я чувствую вашу боль. Я думаю, что причина, по которой у вас возникают проблемы с поиском чего-то подобного в современном API, заключается в том, что люди осознали, что ручное кодирование SQL - плохая идея, когда у нас есть много библиотек ORM, которые будут генерировать запросы для вас независимо от db ( вам нужно только указать диалект db).





Если вы действительно хотите кодировать SQL вручную, выберите POJO и необработанные JDBC DAO. Но это также, возможно, возможность переосмыслить то, как вы делаете что-то, и принять ORM / JPA.
Раньше я без проблем смешивал Hibernate + EJB2 (CMP + BMP), разделяя контексты транзакций, используя JTA.
Эта проблема очень похожа ... Взгляните на https://cwiki.apache.org/GMOxDOC22/developing-bean-managed-persistence-with-jpa.html. Вы можете реализовать свой собственный EntityManager.
Если повезет, вы даже сможете поделиться транзакционными контекстами.
Spring и EJB3 не обязательно исключают друг друга. О какой части весны ты говоришь? Это большой фреймворк, и вы не обязаны использовать его сразу.