Hibernate или сервер приложений JPA? - PullRequest
2 голосов
/ 03 ноября 2010

Я использую Glassfish в производстве и OpenEJB в тестировании. Я использую JPA 1.0. Я использую Hibernate, но никаких специфических функций Hibernate, только стандартный JPA.

Hibernate является избыточным в этой коллекции и должен быть удален, я прав?

Ответы [ 5 ]

3 голосов
/ 03 ноября 2010

Да, всегда включайте внешние зависимости, если они вам действительно нужны.Даже если вы хотите выйти за пределы спецификации JPA, попробуйте использовать EclipseLink, так как это то, что поставляется в комплекте с Glassfish, а также справочная информация для JPA 2.0

.
2 голосов
/ 03 ноября 2010

И OpenEJB, и Glassfish предоставляют реализацию JPA.Таким образом, для запуска приложения вам не нужен спящий режим.

Но , реализация JPA может и в некоторых случаях ведет себя по-разному.Таким образом, нет 100% гарантии того, что ваше приложение будет работать правильно в производственной среде, если вы не запускаете свое приложение во время тестов с той же реализацией JPA.

2 голосов
/ 03 ноября 2010

Нет.Вам все еще нужен Hibernate.

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

1 голос
/ 03 ноября 2010

Hibernate является избыточным в этой коллекции и должен быть удален, я прав?

GlassFish 3 использует EclipseLink в качестве поставщика сохраняемости по умолчанию (на всякий случай учтите, что вы можете установить надстройку для использования Hibernate в качестве поставщика JPA на GlassFish , если хотите). OpenEJB связывает OpenJPA в качестве поставщика сохраняемости по умолчанию.

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

На самом деле, независимо от того, используете ли вы свой код JPA в контейнере или нет, я бы предложил использовать реализацию целевой платформы JPA везде (да, теория говорит, что вы должны иметь возможность использовать любую реализацию JPA, но на практике вам не нужно сталкиваться с конкретной конкретной провайдерской ошибкой, которую вы не обнаружили во время тестирования, потому что использовали другую реализацию).

0 голосов
/ 03 ноября 2010

Я не знаю, есть ли у OpenEJB провайдер ORM, но, предположив, что нет, вы не правы.JPA - это API (расшифровывается как Java Persistence API), а не реализация.Hibernate имеет реализацию для JPA.Посмотрите на стек вызовов, когда вы используете, например, entityManager.persist.Этот вызов JPA проходит через Hibernate-Entity Manager к ядру Hibernate.Так что вам нужен Hibernate для работы JPA.

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