Maison >Java >javaDidacticiel >JPA peut-il rechercher automatiquement les entités annotées avec @Entity ?
Analyse automatique des entités dans persistence.xml
Dans l'API Java Persistence (JPA), les entités sont généralement déclarées dans le descripteur de déploiement persistence.xml en utilisant le
La réponse est oui, mais avec certaines conditions et limitations.
Utiliser le "fichier jar" " Élément
Le fichier persistence.xml peut inclure un
Exemple :
<persistence> <persistence-unit name="eventractor" transaction-type="RESOURCE_LOCAL"> <jar-file>MyEventractor.jar</jar-file> <!-- Explicit listing of entity classes is still allowed --> <class>pl.michalmech.eventractor.domain.User</class> <class>pl.michalmech.eventractor.domain.Address</class> <class>pl.michalmech.eventractor.domain.City</class> <class>pl.michalmech.eventractor.domain.Country</class> <properties> <property name="hibernate.hbm2ddl.auto" value="validate" /> <property name="hibernate.show_sql" value="true" /> </properties> </persistence-unit> </persistence>
Détection automatique spécifique à Hibernate (Java SE)
Dans Hibernate spécifiquement, même si la spécification JPA n'exige pas Dans ce cas, la détection automatique des entités est prise en charge même dans les applications Java SE. Pour activer cela, ajoutez la propriété suivante à votre unité de persistance :
<property name="hibernate.archive.autodetection" value="class, hbm" />
Cela permet à Hibernate de rechercher les classes annotées avec @Entity et les fichiers de mappage Hibernate (.hbm.xml) dans le fichier JAR spécifié par le
Limitations
Il est important de noter que s'appuyer sur l'analyse automatique des entités n'est pas toujours la meilleure pratique. Dans les scénarios où la visibilité du chemin de classe est dynamique ou où il existe plusieurs modules avec des définitions d'entités contradictoires, une liste de classes explicite peut fournir un meilleur contrôle.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!