Нужна ли мне зависимость Hibernate-JPA 2.0 в pom.xml для контейнера JBOSS 5?

В одном из модулей, которые мы используем, он имеет только Entities и это используется в разных модулях, зависимость для hibernate в Entities модуль объявлен в pom.xml следующее:

<dependency>
    <groupId>org.hibernate.javax.persistence</groupId>
    <artifactId>hibernate-jpa-2.0-api</artifactId>
    <version>1.0.1.Final</version>
</dependency>

что это значит?

Я думал, что мы используем JPA 2.0 API и базовая реализация hibernate V1.0.1,

Мой коллега сказал, что у нас есть эта зависимость для времени компиляции, потому что JBOSS AS 5 (который является нашим сервером приложений) обеспечивает зависимость гибернации (которая, я думаю, версия> 3.4).

У меня возник вопрос: почему в приведенной выше зависимости 1.0.1, а не в версии спящего режима JBOSS. мой коллега сказал, что это не имеет значения. Но я не понимаю, почему? Я уверен, что JPA2.0 API не будет совместим с Hibernate 1.0.1. так я действительно использую JPA 2.0?

2 ответа

Решение

Это версия 1.0.1 JPA 2.0. Версия 1.0.1 является версией JAR, а не тем, что реализует код.

Это JPA 2 (код) с версией jar 1.0.1.

------- Обновление 1

Если вы не отправляете какую-либо реализацию, вы будете использовать JPA 1. Я нашел это: https://access.redhat.com/articles/112673 котором говорится, что JBoss EAP 5 использует JPA 1.

Если вы отправляете только API, вы будете использовать текущую реализацию сервера JPA.

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

http://www.openscope.net/2010/07/15/setting-up-a-jboss-instance-v5-x-class-loading/

Поэтому, чтобы избежать каких-либо проблем, объедините файлы API и jar реализации в WAR-файл и настройте сервер любыми доступными способами, чтобы эти локальные файлы jar имели приоритет.

Другие вопросы по тегам