Нужна ли мне зависимость 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 имели приоритет.