2010-10-08 23 views
25

Estoy usando JPA 2.0 y mi proveedor de persistencia es Hibernate; sin embargo, me gustaría simplemente incluir una API estándar de javax, pero en el centro, no hay ningún artefacto 2.0. Actualmente estoy usando el artefacto Hibernate JPA 2.0, pero me gustaría usar algo más estándar.JPA 2.0 API maven artefacto

¿Esto es posible?

Gracias,

Walter

Respuesta

17

Actualmente estoy usando el artefacto Hibernate 2.0 APP, pero me gustaría usar algo más estándar

Todavía no hay un artefacto de javax.persistence:persistence-api:jar:2.0 Sun/Oracle. Utilice el artefacto completo javax:javaee-api:jar:6.0 si quiere algo de Sun/Oracle ... o simplemente quédese con las interfaces proporcionadas por Hibernate, EclipseLink, OpenJPA, etc.

+0

¿Sigue siendo así a partir de noviembre de 2010? – HDave

+0

Hay un error tipográfico: tiene 'javaeee-api' (tenga en cuenta las 3 e), debe ser 'javaee-api' –

+5

Parece que este sigue siendo el caso aquí en enero de 2012 ... ¿qué da? – HDave

2

La respuesta directa a sus preguntas es: No, no es posible . La versión más larga se da aquí: Apache > Maven > Guide to Coping with Sun JARs. Un breve resumen de la respuesta más larga:

Hay (al menos) dos problemas con la publicación de artefactos Sun/Oracle en el repositorio central:

  1. licencia restrictiva
  2. convención de nomenclatura
9

Como Ivan explica, no hay frascos Sunacle oficiales en Maven. Sin embargo, es muy frecuente que un implementador de una API determinada publique un artefacto para esa API (la misma API, en lugar de su implementación.

En el caso de JPA 2.0, Hibernate publica org.hibernate.javax.persistence:hibernate-jpa-2.0-api, que . javax.persistence contiene sólo las clases, y no hay cosas-Hibernate específica, por lo tanto

Mi build.gradle dice:

dependencies { 
    compile group: 'org.hibernate.javax.persistence', name: 'hibernate-jpa-2.0-api', version: '1.0.1.Final' 
    runtime group: 'org.hibernate', name: 'hibernate-entitymanager', version: '4.1.4.Final' 
} 

que pone liberación de la API de Hibernate en la ruta de clase de compilación, y su aplicación en la ruta de clase en tiempo de ejecución

+0

Cada proveedor importante parece tener sus propias clases 'javax.persistence'. Lo cual es estúpido, ya que uno pensaría que habría uno para 2016 que es el canónico para JPA 2.0, 2.1, etc. – Powerlord

4

Actualmente (Q4 2017) hay un javax.persistence-api disponible en maven central.

<dependency> 
    <groupId>javax.persistence</groupId> 
    <artifactId>javax.persistence-api</artifactId> 
    <version>2.2</version> 
</dependency> 

El código se mantiene en this github repo.

Cuestiones relacionadas