devstory

Utiliser les outils Hibernate pour générer des classes Entity à partir de tables

View more Tutorials:

Suivez-nous sur notre fanpage pour recevoir des notifications chaque fois qu'il y a de nouveaux articles. Facebook

1- Introduction

This document is based on:
  • Eclipse 4.5 (MARS)

  • Hibernate 5.1.0.Final

  • Hibernate Tools 4.3.1.Final.html

(Last update document: 21-05-2016).
D'abord, vous devez vous assurer que vous avez installé "Hibernate Tools" dans Eclipse. "Hibernate Tools" est un parmi les outils de JBoss - "JBoss Tools".
Voir plus à:

2- Database for example, used in this document

La base de données a utilisé pour illustrer dans ce tutoriel "simplehr". Vous pouvez faire des références à:

3- Connect to the database via the "Database Development"

Dans Eclipse sélectionnez:
  • Window/Perspective/Open Perspective/Other...
Créez une nouvelle connection à la base de données simplehr:
Dans ce tutoriel, je vais connecter à la base de données d'Oracle. Vous pouvez vous connecter à une base de données différente, de la même manière.
Pressez sur l'icône pour déclarer Driver de votre base de données que vous venez de sélectionnée.
Cliquez à "Add JAR/Zip"
Saisissez l'information pour connecter à la base de données. Ensuite, cliquez à "Test Connection" pour vous assurer que la connexion à la base de données est réussie.
Vous pouvez voir la structure de votre base de données dans "Data Source Explorer".
Essayez les données query sur une table.

4- Create Project

Enter:
  • Group Id: org.o7planning
  • Artiface Id: HibernateGenerateEntities
Le projet est créé:
La déclaration la bibliothèque Hibernate 5, et des bibliothèques JDBC pour Oracle, MySQL, SQL Server.
pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
  http://maven.apache.org/xsd/maven-4.0.0.xsd">
 
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.o7planning</groupId>
  <artifactId>HibernateGenerateEntities</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>HibernateGenerateEntities</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

 <repositories>
     <!-- Repository for ORACLE JDBC Driver -->
     <repository>
         <id>codelds</id>
         <url>https://code.lds.org/nexus/content/groups/main-repo</url>
     </repository>
 </repositories>


  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    
   <!-- Hibernate -->
     <!-- http://mvnrepository.com/artifact/org.hibernate/hibernate-core -->
     <dependency>
         <groupId>org.hibernate</groupId>
         <artifactId>hibernate-core</artifactId>
         <version>5.1.0.Final</version>
     </dependency>

     <!-- http://mvnrepository.com/artifact/org.hibernate/hibernate-entitymanager -->
     <dependency>
         <groupId>org.hibernate</groupId>
         <artifactId>hibernate-entitymanager</artifactId>
         <version>5.1.0.Final</version>
     </dependency>


     <!-- http://mvnrepository.com/artifact/org.hibernate/hibernate-c3p0 -->
     <dependency>
         <groupId>org.hibernate</groupId>
         <artifactId>hibernate-c3p0</artifactId>
         <version>5.1.0.Final</version>
     </dependency>


     <!-- MySQL JDBC driver -->
     <!-- http://mvnrepository.com/artifact/mysql/mysql-connector-java -->
     <dependency>
         <groupId>mysql</groupId>
         <artifactId>mysql-connector-java</artifactId>
         <version>5.1.34</version>
     </dependency>

     <!-- Oracle JDBC driver -->
     <dependency>
         <groupId>com.oracle</groupId>
         <artifactId>ojdbc6</artifactId>
         <version>11.2.0.3</version>
     </dependency>

   <!-- SQLServer JDBC driver (JTDS) -->
   <!-- http://mvnrepository.com/artifact/net.sourceforge.jtds/jtds -->
   <dependency>
       <groupId>net.sourceforge.jtds</groupId>
       <artifactId>jtds</artifactId>
       <version>1.3.1</version>
   </dependency>
            
  </dependencies>
 
</project>

5- Configuring Hibenate

"Hibernate Tools" permet de créer le fichier de configuration Hibernate hoàn toàn trực quan. Và bây giờ chúng ta sẽ tạo file "hibernate.cfg.xml" bằng công cụ này.
Dans Eclipse sélectionnez:
  • Window/Perspective/Open Perspective/Other...
Cliquez sur le bouton droit et sélectionnez "Add Configuration.." pour créer un fichier de configuration Hibernate.
Saisissez le nom du fichier "hibernate.cfg.xml", et le mettez dans un dossier "src/main/java" du projet.
Vous pouvez taper les informations dans une connexion à la base de données ou récupérer les informations de connexion que vous avez déjà déclarées. Cliquez sur "Get values from Connection".
Sélectionnez Connection "Oracle (Simplehr)", ce que vous avez créé au dessus. Cliquez sur Ok pour continuer.
Ensuite, sélectionnez la classe "dialect" qui correspond au type de votre base de données. Avec Oracle elle sera Oracle10g, notez que la classe dialect "Oracle10g" est utilisée dans ces deux cas: la version 10 et la version 11 d'Oracle.
Cliquez Ok pour terminer la configuration. Après cette étape, le fichier "hibernate.cfg.xml" a été créé dans votre projet src/main/java.
La configuration Hibernate est créée. (Voir dans Hibernate Configurations view)
Voir dans "Package Explorer":
  • hibernate.cfg.xml
hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="hibernate.connection.driver_class">oracle.jdbc.OracleDriver</property>
        <property name="hibernate.connection.password">12345</property>
        <property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:db12c</property>
        <property name="hibernate.connection.username">simplehr</property>
        <property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
    </session-factory>
    
</hibernate-configuration>
Ensuite, nous allons configurer, comment lire la structure de la table et générer à la classe entity à partir de la struture dans Database.
  • Window/Perspective/Open Perspective/Hibernate
Remarque: Si le processus de génération des entity échoue, vous pouvez voir comment le résoudre dans l'annexe..

6- Appendix: Error while generating the entities

Peut être lors que vous générez les Entity vous obtiendrez une erreur comme ci- dessous:
** NoClassDefFoundError **

org.hibernate.console.HibernateConsoleRuntimeException: Received a NoClassDefFoundError,
probably the console configuration classpath is incomplete or contains conflicting versions of the same class
Received a NoClassDefFoundError, probably the console configuration classpath is incomplete or contains conflicting versions of the same class
org.hibernate.console.HibernateConsoleRuntimeException:
Received a NoClassDefFoundError, probably the console configuration classpath is incomplete or contains conflicting versions of the same class
Received a NoClassDefFoundError, probably the console configuration classpath is incomplete or contains conflicting versions of the same class
java.lang.NoClassDefFoundError: org/apache/commons/collections/MultiMap
org/apache/commons/collections/MultiMap
java.lang.ClassNotFoundException: org.apache.commons.collections.MultiMap cannot be found by org.jboss.tools.hibernate.runtime.v_5_1_5.0.1.Final-v20160331-1852-B88
org.apache.commons.collections.MultiMap cannot be found by org.jboss.tools.hibernate.runtime.v_5_1_5.0.1.Final-v20160331-1852-B88
Vous devez configurer pour utiliser une ancienne version de Hibernate.
Et redémarrez pour générer la Entity:

7- Hibernate Tutorial

Peut-être que vous êtes intéressé par:

View more Tutorials:

Peut-être que vous êtes intéressé

Voici des leçons en ligne à part du site web o7planning que nous recommandons. La liste comprend des leçons en ligne et celles en promo.