Comment détecter les entités automatiquement OpenJPA?
-
28-09-2019 - |
Question
Je cherche une détection d'entité OpenJPA. Que je ne ai pas besoin de déclarer toutes les entités du persistence.xml.
Edit: Je suis désolé, j'ai oublié de dire que je développe une application java se.
La solution
Lire la section Liste de classe persistante en le manuel utilisateur.
Contrairement à de nombreux produits ORM, OpenJPA fait pas besoin de connaître tous vos classes persistantes au démarrage. OpenJPA découvre de nouvelles classes persistantes automatiquement car ils sont chargés dans la machine virtuelle Java; en fait, vous pouvez introduire de nouvelles classes persistantes en cours d'exécution applications sous OpenJPA.
- Remarque: Il y a des restrictions de couple qui sont documentées dans le manuel utilisateur, mais je suis parti les garder à ce bref post.
Autres conseils
Par la spécification JPA, vous devez lister toutes les classes explicitement dans un environnement Java SE:
6.2.1.6 fichier de mappage, fichier jar, classe, excluez-classes pas répertoriées
(...)
Une liste de persistance gérée par le nom classes peuvent également être précisées à la place de, ou en plus, les fichiers JAR et des fichiers de mapping. toute cartographie annotations métadonnées trouvées sur ces les classes seront traitées, ou sera cartographiée à l'aide du mappage par défaut d'annotation. L'élément de classe est utilisé pour la liste d'une persistance gérée classe. Une liste de tous nommés gérés classes de persistance doivent être spécifiées dans Java S'environnements pour assurer la portabilité. Portable Java SE les applications ne doivent pas compter sur la d'autres mécanismes décrits ici pour préciser la persistance gérée classes d'une unité de persistance. La persistance des fournisseurs peuvent aussi exiger que l'ensemble des classes d'entités et classes qui doivent être gérées doivent être entièrement énumérés dans chacun des fichiers
persistence.xml
en Java SE environnements.Toutes les classes contenues dans la racine l'unité de persistance sont également recherchés pour la persistance gérée par annotée les classes et les métadonnées de mappage annotations trouvées sur eux seront traitées, ou ils seront mis en correspondance en utilisant les valeurs par défaut d'annotation de mappage. S'il est pas prévu que la annotée persistance des classes contenue dans la racine de la unité de persistance être inclus dans le unité de persistance, la élément de
exclude-unlisted-classes
Devrait être utilisé. le élément deexclude-unlisted-classes
est non destiné à être utilisé dans Java SE environnements.
Maintenant, si vous ne me dérange pas d'être pas portable, vous pouvez utiliser une extension de fournisseur, mais je ne pouvais pas trouver quelque chose de similaire à la propriété hibernate.archive.autodetection
de mise en veille prolongée dans OpenJPA.
Utilisation JPA intégration de printemps (qui permet le balayage de chemin de classe plus flexible) est une autre option.
Il y a aussi l'Assemblée parlementaire paritaire-plugin qui peut le faire pour vous. La dernière version est pas disponible dans Maven Central de sorte que vous devrez cloner et construire vous-même.