EJB 3 или Hibernate 3 - PullRequest
       41

EJB 3 или Hibernate 3

11 голосов
/ 09 января 2011

Что касается веб-приложения Java EE, которое будет обслуживаться полноценным сервером приложений Java EE, например GlassFish, какое решение является лучшим ORM ? EJB 3 или Hibernate 3 А почему?

Ответы [ 3 ]

28 голосов
/ 09 января 2011

Эти два абсолютно разные.

EJB3 является компонентной моделью и не имеет прямого отношения к ORM.Он помогает легко управлять транзакциями и дает вам легкий доступ к диспетчеру сущностей из JPA, который является стандартизированным решением ORM в Java EE.

Hibernate (3) действительно является решением ORM, и, поскольку онобывает тот, который реализует JPA.

Таким образом, более логичный вопрос заключается в том, использовать ли стандартизированные интерфейсы JPA или напрямую использовать ядро ​​API Hibernate.Тогда последующим вопросом может быть использование автономного JPA или в сочетании с EJB 3.

Ответ немного зависит от того, что именно вам нужно, но обычно использование JPA в сочетании с EJB 3 является самым простым решением.Использование автономного JPA или Hibernate требует гораздо более подробного кода, и вам придется вручную управлять транзакциями, что может быть проблемой.

JPA против Hibernate - еще одна дискуссия.Преимущество JPA заключается в наличии стандартизированных интерфейсов, поэтому больше разработчиков, вероятно, будут знакомы с ним.С другой стороны, нативные Hibernate API-интерфейсы всегда являются расширенным набором API-интерфейсов JPA и, таким образом, предлагают больше возможностей.

Как правило, разработчики основывают свой код на JPA, а затем используют определенные аннотации Hibernate или вызовы API, где это имеет смысл.В 99,99% случаев такое смешанное использование API поддерживается.

Также обратите внимание, что Glassfish в комплекте с EclipseLink, а не с Hibernate.EclipseLink сравним с Hibernate, но предшествует ему более десяти лет.Hibernate многое взял от EclipseLink (тогда он назывался TopLink).

См. Также ответ, который я дал на аналогичный вопрос: Доступ к таблице базы данных через JPA Vs.EJB в веб-приложении

5 голосов
/ 10 января 2011

Что вы спросили, какой API лучше: EJB3 (JPA) или Hibernate? Я сказал это, потому что вы спрашиваете о EJB3 JPA (который является только API) и Hibernate (который является реализацией и API). Таким образом, чтобы сравнить яблоки с яблоками, нужно сравнить API. Вы выбираете между стандартным (JPA) и более мощным проприетарным API (Hibernate).

Но, выбрав JPA, нужно сделать еще один выбор: для его реализации. Выбрав Hibernate для реализации, вы можете отказаться от своего вопроса, поскольку доступны как JPA, так и Hibernate.

Таким образом, ваш вопрос изменится: какую реализацию JPA выбрать (между Hibernate, EclipseLink, OpenJPA, DataNucleus и т. Д.)? ...

0 голосов
/ 09 января 2011

Они похожи;3.0 спецификации для EJB взяли много от Hibernate и Spring.

У меня нет ни одной твердой метрики, которую можно было бы процитировать, но я бы сказал, что если вы используете Glassfish, для меня имеет смысл использовать все его технологии.Зачем вводить другую зависимость?Посмотрите, сможет ли Glassfish выполнить эту работу за вас.

...