Comment configurer et emballer une application Java simple pour utiliser JPA
-
19-09-2019 - |
Question
J'essaie d'apprendre JPA et je veux créer une application de ligne de commande Java simple qui utilisera JPA pour interroger et mettre à jour une table de base de données. J'ai cartographié le code simple nécessaire pour le faire. Mais je ne sais pas comment configurer la structure du répertoire, où placer le fichier persistance.xml, l'emballage, etc. Ce n'est qu'un exercice d'apprentissage rapide et sale, donc je veux garder cela aussi simple que possible. Quelqu'un peut-il expliquer les étapes pour ce faire?
J'utilise weblogic 10.3.
La solution
persistance.xml va dans le META-INF
Répertoire qui est au même niveau que vos cours de persistance. Voici un exemple de quelques configurations valides et non valides. Dans les applications non java ee que j'ai écrites, je construis le pot avec persistance.xml WEB-INF/classes/META-INF/
, parce que mes cours JPA sont en WEB-INF/classes/
.
Autres conseils
Je ne sais pas comprendre ce que WebLogic a à voir avec une application de ligne de commande Java :)
De toute façon, tout Les détails que vous recherchez sont disponibles dans le Unités de persévérance section de Le tutoriel Java EE 5 que je cite ci-dessous:
Unités de persévérance
Une unité de persistance définit un ensemble de toutes les classes d'entité qui sont gérées par
EntityManager
instances dans une application. Cet ensemble de classes d'entités représente les données contenues dans un seul magasin de données.Les unités de persistance sont définies par le
persistence.xml
fichier de configuration. Le fichier de pot ou le répertoire dontMETA-INF
Le répertoire contientpersistence.xml
est appelé la racine de l'unité de persistance. La portée de l'unité de persistance est déterminée par la racine de l'unité de persistance.Chaque unité de persistance doit être identifiée avec un nom unique à la portée de l'unité de persistance.
Les unités persistantes peuvent être emballées dans le cadre d'un fichier JAR WAR ou EJB, ou peuvent être emballées sous forme de fichier JAR qui peuvent ensuite être incluses dans un fichier de guerre ou d'oreille.
Si vous emballez l'unité persistante comme un ensemble de classes dans un fichier JAR EJB,
persistence.xml
devrait être placé dans le pot EJBMETA-INF
annuaire.Si vous emballez l'unité de persistance comme un ensemble de classes dans un fichier de guerre, persistance.xml doit être situé dans le fichier de guerre
WEB-INF/classes/META-INF
annuaire.Si vous emballez l'unité de persistance dans un fichier JAR qui sera inclus dans un fichier de guerre ou d'oreille, le fichier JAR doit être localisé:
- Dans le
WEB-INF/lib
Répertoire d'une guerre.- Au niveau supérieur d'un fichier d'oreille.
- Dans le répertoire de la bibliothèque du fichier EAR.
La
persistence.xml
Dossier
persistence.xml
définit une ou plusieurs unités de persistance. Ce qui suit est un exemplepersistence.xml
dossier.<persistence> <persistence-unit name="OrderManagement"> <description>This unit manages orders and customers. It does not rely on any vendor-specific features and can therefore be deployed to any persistence provider. </description> <jta-data-source>jdbc/MyOrderDB</jta-data-source> <jar-file>MyOrderApp.jar</jar-file> <class>com.widgets.Order</class> <class>com.widgets.Customer</class> </persistence-unit> </persistence>
Ce fichier définit une unité de persistance nommée
OrderManagement
, qui utilise une source de données consacrée à JTAjdbc/MyOrderDB
. Lajar-file
etclass
Les éléments spécifient les classes de persistance gérées: classes d'entités, classes intégrées et superclasses mappées. Lajar-file
L'élément spécifie des fichiers JAR qui sont visibles pour l'unité de persistance emballée qui contiennent des classes de persistance gérées, tandis que l'élément de classe nomme explicitement des classes de persistance gérées.La
jta-data-source
(pour les sources de données consacrées à la JTA) etnon-jta-data-source
(Sources de données sans JTA) Les éléments spécifient le nom JNDI global de la source de données à utiliser par le conteneur.