web-dev-qa-db-fra.com

Quel pot dois-je inclure pour utiliser le package javax.persistence dans une application basée sur la mise en veille prolongée?

Est-il acceptable de le retirer du projet Glassfish (glassfish-persistence-api) ou peut-être y a-t-il un pot Hibernate?

42
Sergey

Si vous développez un système OSGi, je vous recommande de télécharger la version "bundlefied" depuis Springsource Enterprise Bundle Repository .

Sinon, vous pouvez utiliser un fichier jar standard contenant le package javax.persistence

12
Schildmeijer

Si vous utilisez maven, l'ajout de la dépendance ci-dessous devrait fonctionner

<dependency>
    <groupId>javax.persistence</groupId>
    <artifactId>persistence-api</artifactId>
    <version>1.0</version>
</dependency>
15
Bahadır Yağan

Vous pouvez utiliser le ejb3-persistence.jar fourni avec hibernate. Ce fichier jar inclut uniquement le package javax.persistence.

12
alves

Dans le dernier et le plus grand Hibernate, j'ai pu résoudre la dépendance en incluant le hibernate-jpa-2.0-api-1.0.0.Final.jar dans le répertoire lib/jpa. Je n'ai pas trouvé le pot ejb-persistence dans le téléchargement le plus récent.

8
Dave Shah

hibernate.jar et hibernate-entitymanager.jar ne contiennent que les packages org.hibernate. *. Vous devriez donc le prendre du projet Glassfish.

4
Jerrish Varghese

Pour JPA 2.1, le package javax.persistence se trouve ici:

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

Voir: hibernate-jpa-2.1-api sur Maven Central Le modèle semble être de changer le nom de l'artefact à mesure que la version JPA change. Si cela continue, de nouvelles versions devraient arriver dans Maven Central ici: Hibernate JPA versions

L'APi JPA 2.1 ci-dessus peut être utilisé conjointement avec Hibernate 4.3.7, en particulier:

<dependency>
   <groupId>org.hibernate</groupId>
   <artifactId>hibernate-entitymanager</artifactId>
   <version>4.3.7.Final</version>
</dependency>
3
antonycc

En général, je suis d'accord avec les réponses ci-dessus qui recommandent d'ajouter une dépendance maven, mais je préfère la solution suivante.

Ajoutez une dépendance avec des classes d'API pour le profil JavaEE complet:

<properties>
    <javaee-api.version>7.0</javaee-api.version>
    <hibernate-entitymanager.version>5.1.3.Final</hibernate-entitymanager.version>
</properties>

<depencies>
    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-api</artifactId>
        <version>${javaee-api.version}</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

Ajoutez également la dépendance avec un fournisseur JPA particulier comme suggéré par antonycc:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
    <version>${hibernate-entitymanager.version}</version>
</dependency>

Remarque <scope>provided</scope> dans la section des dépendances de l'API: cela signifie que le pot correspondant ne sera pas exporté dans l'artefact lib/, mais sera fourni par le serveur d'applications. Assurez-vous que votre serveur d'applications implémente la version spécifiée de l'API JavaEE.

3
yaromir