web-dev-qa-db-fra.com

Générer des entités JPA 2 à partir d'une base de données existante

Comment puis-je générer @Entity conforme JPA2 à partir de bases de données existantes?.

J'ai trouvé ceci: Question

Il n'est toujours pas clair si JBoss générera du JPA2 conforme et je voudrais également savoir s'il existe un moyen indépendant du fournisseur de le faire.

33
will824

Vous pouvez utiliser un plugin comme Eclipse Dali pour faire l'affaire pour vous. Vous pouvez vous référer à la documentation, section 3.11 Génération d'entités à partir de tables .

Cependant, je ne connais aucun outil indépendant spécifique au fournisseur pour le faire.

19
Edwin Dalorzo

Essayez d'utiliser les outils de cartographie inversée OPENJPA. Ils offrent beaucoup plus de facilité et sont faciles à configurer. Cet exemple clarifierait.

Si vous utilisez maven comme outil de construction, ajoutez cette entrée à votre pom.xml

    <plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2</version>
<configuration>
<mainClass>org.Apache.openjpa.jdbc.meta.ReverseMappingTool</mainClass>
<commandlineArgs>
    -directory src/main/Java -accessType fields
    -useGenericCollections true -package org.yourproject.model
    -metadata none -annotations true
    -innerIdentityClasses false -useBuiltinIdentityClass false
    -primaryKeyOnJoin false
    </commandlineArgs>
<includePluginDependencies>true</includePluginDependencies>
</configuration>
<dependencies>
    <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
        <version>1.0.CR3</version>
    </dependency>
    <dependency>
        <groupId>org.Apache.openjpa</groupId>
        <artifactId>openjpa-all</artifactId>
        <version>2.0.1</version>
    </dependency>
</dependencies>
    </plugin>

Ajoutez également les propriétés suivantes dans le fichier persistence.xml qui se trouve dans le dossier META-INF de vos ressources. Ceux-ci seraient exploités par l'outil openjpa pour établir la connexion à la base de données.

    <properties>
<property name="openjpa.ConnectionUserName" value="${db.username}"/>
<property name="openjpa.ConnectionPassword" value="${db.password}"/>
<property name="openjpa.ConnectionURL" value="${db.url}"/>  
<property name="openjpa.ConnectionDriverName"  value="${db.driver.class}"/>     
   </properties>

Pour générer les fichiers d'entité, lancez simplement l'objectif maven dans le répertoire du projet en utilisant mvn org.codehaus.mojo: exec-maven-plugin: Java et il générera les fichiers à l'emplacement souhaité.

17
6
Cris

Vous devriez jeter un œil à minuteproject sur cette piste de rétro-ingénierie pour JPA2 . Il s'agit d'un outil indépendant du fournisseur. Dans la version 0.5.5, il génère:

  • Entités JPA2 (pour la table et les vues) et métamodèle associé
  • persistence.xml (seule la configuration de mise en veille prolongée est disponible en 0.5.5) mais vous pouvez l'écraser.
  • maven pom avec intégration querydsl
  • Enum classes (si spécifié lors de l'enrichissement, c'est-à-dire dans le fichier de configuration).

Je ne l'ai pas essayé avec H2 mais pour ce faire, vous devez

  • ajoutez le pilote H2 jdbc dans $ MP_HOME/application/lib/extra
  • ajoutez la classe de pilote et vos paramètres de connexion dans la configuration de MinuteProject.
5
xflorian

Telosys est probablement le moyen le plus simple pour ce type de génération de code.

Il génère les entités JPA (bien sûr) et si vous voulez une application web entièrement opérationnelle

Voir le site web: http://www.telosys.org

4
John T

Il existe une option dans les Netbeans IDE pour générer des entités à partir d'une base de données.

4
Ryan

Eclipse fournit cette fonction depuis un certain temps maintenant (origine de Dali, incluse depuis la version Kepler). Faites un clic droit sur votre projet JPA -> Outils JPA -> Générer des entités à partir de tables:

Screenshot of the menu entry

3
SebastianH

MinuteProject est génial. J'ai généré Java à partir du schéma Oracle pour JPA2. Et tout cela avec beaucoup de facilité. Suivez les étapes données sur le site Web de minuteproject voici l'url: allez ici

2
Sagar Kulkarni

L'option "générer des entités à partir de la table" fonctionne-t-elle pour la base de données H2 ?, je trouve toujours la liste des schémas vide dans le Sélectionnez l'étape des tables même si j'ai une configuration de connexion valide avec la base de données H2 à l'aide du pilote JDBC générique.

La même connexion montre des tableaux dans hibernate-tools. Par exemple, lorsque je crée un XML d'ingénierie inverse dans son éditeur, je peux actualiser l'onglet des tables et voir une liste complète. Je ne sais pas si les outils d'hibernation sont pertinents car ils pourraient utiliser la configuration de la console à la place.

0
samarjit samanta

Si vous êtes un utilisateur de netbeans, j'obtiens un excellent plugin dans neatbeans, http://plugins.netbeans.org/plugin/53057/jpa-modeler

Cette vidéo montre comment l'utiliser https://www.youtube.com/watch?v=TDbZ5EGpvoY

Il peut être installé à partir du menu de NetBeans Outils-> Plugins

Ça fonctionne bien pour moi.

0
zahid9i