Подтвердить что ты не робот

EJB 3 или Hibernate 3

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

4b9b3361

Ответ 1

Эти два совершенно разные.

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

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

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

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

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

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

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

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

Ответ 2

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

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

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

Ответ 3

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

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