Où puis-je trouver un JPA2 Maven dépendance?
Je suis en train de construire une mise en œuvre agnostique maven module qui s'appuie sur JPA2. Malheureusement, la seule Maven JPA dépendance est JPA1 base, et par conséquent, je ne peux pas utiliser l'EntityManager.detach() méthode qui est une JPA2 option seulement.
Idéalement, j'aimerais être en mesure de préciser mon javax.la persistance de la dépendance dans mon Pompon, et exiger l'application/conteneur pour l'alimentation de l'JPA2 mise en œuvre. Malheureusement, je ne peux pas trouver une telle dépendance.
Est mon seul choix à ce point de déclarer à hibernate jpa-2.0-api de la version 1.0.0.La FINALE comme une condition de dépendance?
- Voir [première réponse][1]. [1]:
stackoverflow.com/questions/2243147/jar-file-for-jpa-2-0 - À partir de ce que je peux dire, je peux utiliser le geronimo-jpa_2.0_spec dépendance ainsi. Mais cela fait-il une différence si j'utilise le geronimo ou hibernate jpa dépendance? Il semble comme si il n'est pas pertinent si I champ d'application prévus.
- Sur les principes généraux (pas d'expérience ici), j'aimerais utiliser un à partir d'une mise en œuvre que vous ne prévoyez pas d'utiliser pour la plupart de vos tests. Qui vous donnera plus de confiance que vous êtes à la mise en œuvre indépendante, strictement d'un moment de la compilation point de vue.
Vous devez vous connecter pour publier un commentaire.
Hibernate JPA 2 classes (javax.la persistance...) sont ici:
Je sais que c'est un très vieux post, si vous voulez aller agnostique de la mise en œuvre, alors vous devriez utiliser l'API Java EE dépendance à la place.
Il suffit d'ajouter à votre POM:
Où le ${jee.version} est votre choix Java EE version. Je suis actuellement à l'aide 7.0. Il a toutes les EJB, JSF, JPA, et les Api de dépendances.
javaee-api
semble encore incomplète. J'ai besoin d'ajouterjavax.servlet:javax.servlet-api:3.1.0
ainsi.- Je utiliser le
javax.persistence
artefact (et pas leeclipselink
artefact) à partir de la EclipseLink repository Maven pour accéder à la JPA 2 classes de l'API. Des extraits de POM comprennent:La
javax.persistence
objet contient toutes les classes de l'API, et aucun des EclipseLink classes (à l'exception de deux), vous permettant de spécifier le champ d'application est fourni; il en va de même pour la EclipseLink fournisseur JPA (ce qui est dans leeclipselink
artefact Id).Je n'ai pas mélangé les
javax.persistence
artefact avec lehibernate-entitymanager
artefact, qui est la façon dont j'ai géré la dépendance d'un autre projet qui s'appuie sur Hibernate EntityManager au lieu de EclipseLink pour le fournisseur JPA. Un extrait de la deuxième POM du projet est présenté ci-dessous:Je ne modifier la dépendance des étendues de
provided
àtest
dans d'autres projets afin de s'assurer que les tests unitaires auront un fournisseur JPA dans le classpath. Ceci est principalement fait pour masquer les effets secondaires de l'utilisation de lajavaee-api
de la dépendance, que j'utilise dans le POM parent pour permettre la compilation des références à plusieurs Java EE 6 classes de l'API.Ce sont les plus pertinentes et les plus officielle de l'API pour JPA2 de EclipseLink:
À la différence de mise en veille prolongée de l'API ce sont officiel de spécification et de favoriser l'amélioration des génériques quand il s'agit de Critères d'utilisation de l'API.
Pour la JPA 2.2 API "officielle" artefact est disponible à partir de maven central, voir cette réponse.
À compter d'aujourd'hui, je pense que le plus à jour est:
C'est comment vous pouvez utiliser JPA dans un maven:
J'ai été en mesure de résoudre résoudre mon Maven JPA2 de dépendance par l'ajout d'un couple de dépendances du projet pom.xml fichier. Voir ci-dessous pour le code xml pour les dépendances.
J'ai trouvé la dernière groupId et artifactId versions en explorant les répertoires sur Maven Central. Je sortis de l'arborescence du répertoire jusqu'à ce que j'ai trouvé le metadata.xml les fichiers pour le la persistance.de base et la la persistance.jpa artefacts.
Note: La dépendance sur la persistance.jpa est ce qui apporte réellement dans la javax.la persistance jar.