Posez votre question »

Hibernate - Partie 2: configuration et utilisation

Juillet 2015


Voir la première partie de l'astuce Hibernate (Partie 1): Présentation



configuration et utilisation de Hibernate


Configuration Hibernate dans une application JAVA

  • Installer JDK 1.4 ou JDK 1.5
  • télécharger la version3 à partir de [www.hibernate.org]
  • Référencer les jars Hibernate dans le classpath.
    • Définir le fichier de configuration Hibernate hibernate.cfg.xml :

Ce fichier est recommandé d’être placé sur le répertoire contenant le code source (source JAVA) de l’application JAVA.

Ci-dessous un exemple de fichier hibernate.cfg.xml avec les commentaires nécessaires :

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration
    PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
    "[http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

  <session-factory>
	
    	 
				
		<property name="hibernate.connection.url">jdbc:oracle:thin:@dbServer:1521:db</property> 
		<property name="hibernate.connection.driver_class">oracle.jdbc.OracleDriver</property>
        	<property name="dialect">org.hibernate.dialect.Oracle9Dialect</property>
		<property name="hibernate.connection.username">dbusername</property>
		<property name="hibernate.connection.password">dbpassword</property>
		
 			
		<!-- Configuration hibernate -->
       		 <property name="show_sql">true</property>
		<property name="format_sql">true</property>  
       		 <property name="hibernate.use_outer_join">true</property>
		<property name="hibernate.query.substitutions">1</property>
		<property name="hibernate.connection.autocommit">false</property>
		<property name="hibernate.jdbc.batch_size">50</property>
		<property name="hibernate.jdbc.use_get_generated_keys">true</property>

		
		<!-- Pool de connexion : ici C3P0 qui est déclaré -->
		<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
		<property name="hibernate.c3p0.acquire_increment">3</property> 
		<property name="hibernate.c3p0.idle_test_period">180</property> 
		<property name="hibernate.c3p0.max_size">100</property> 
		<property name="hibernate.c3p0.min_size">10</property> 
		<property name="hibernate.c3p0.timeout">1000</property>
		
		 <!—désactiver la cache  deuxième niveau -->
		<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>

				
		
		
		<!—Liste des fichiers de Mapping hbm -->
		<mapping resource="com/org/client/mapping/Client.hbm.xml"/>
		
		
	</session-factory>
  </hibernate-configuration>



*
    • Définir les fichiers de mapping hbm:

C’est un ensemble de fichiers qui fait le mapping entre l’entité de base de données et l’objet JAVA de persistence associé.
Les chemins complets de tous les fichiers de mapping hbm sont décrits dans le fichier de configuration hibernate.cfg.xml. (voir exemple du fichier de configuration ci-dessus)

Utilisation de Hibernate dans une application JAVA :


Dans l’exemple d’utilisation nous allons nous reposer sur l'exemple du fichier de configuration Hibernate ci-dessus
  • Déclaration de la table  (Oracle) :


CREATE TABLE CLIENT
(
	  ID_Client NUMBER(10) NOT NULL,
	  TITRE VARCHAR2(10),
	  NOM VARCHAR2(30),	  
	  REMISE NUMBER(19,5),
	  CA NUMBER(19,5),
	  CONSTRAINT PK_CLIENT PRIMARY KEY (CLIENT_ID)
);
  • Déclaration des classes JAVA de persistence :

/** constructeur par défaut */

public Client() {
}

/** Constructeur complet **/
public Client(Long clientId, String titre, String nom, BigDecimal remise, BigDecimal ca)
{
this.idClient = idClient;
this.titre = titre;
this.name = name;
this.remise = remise;
this.ca = ca;
}

/** Les getters et setters**/
public Long getIdClient()
{
return this.clientId;
}
public void setIdClient (Long clientId) {
this.clientId = clientId;
}
public String getTitre() {
return this.titre;
}
public void setTitre(String titre) {
this.titre = titre;
}
public String getNom() {
return this.nom;
}
public void setNom(String nom) {
this.nom = nom;
}
public BigDecimal getRemise() {
return this.remise;
}
public void setRemise(BigDecimal remise) {
this.remise = remise;
}
public BigDecimal getCa() {
return this.ca;
}
public void setCa(BigDecimal ca) {
this.ca = ca;
}
}
  • Fichier de Mapping Client.hbm.xml :


<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
    
<hibernate-mapping>
<class 
    name="[Nom_Package].Client" 
    table="CLIENT"
         entity-name="Client"
>	
    <meta attribute="class-description" inherit="false">
       @hibernate.class
        table="CLIENT"
    </meta>

    <id
        name="idClient"
        type="java.lang.Long"
        column="ID_CLIENT"
    >
		    <meta attribute="field-description" inherit="false">
		       Id du client
		    </meta>
    
        <meta attribute="field-description">
           @hibernate.id
            generator-class="assigned"
            type="java.lang.Long"
            column="CLIENT_ID"

        </meta>
        <generator class="increment" />
    </id>

    <property
        name="titre"
        type="java.lang.String"
        column="TITRE"
        length="10"
    >
		    <meta attribute="field-description" inherit="false">
		       Titre du client
		    </meta>
        <meta attribute="field-description">
           @hibernate.property
            column="TITRE"
            length="10"
        </meta>    
    </property>
    <property
        name="name"
        type="java.lang.String"
        column="NAME"
        length="30"
    >
		    <meta attribute="field-description" inherit="false">
		       Nom du client
		    </meta>
        <meta attribute="field-description">
           @hibernate.property
            column="NAME"
            length="30"
        </meta>    
    </property>

    <property
        name="remise"
        type="java.math.BigDecimal"
        column="REMISE"
        length="19"
    >
		    <meta attribute="field-description" inherit="false">
		       Remise du client
		    </meta>
        <meta attribute="field-description">
           @hibernate.property
            column="REMISE"
            length="19"
        </meta>    
    </property>
    <property
        name="ca"
        type="java.math.BigDecimal"
        column="CA"
        length="19"
    >
		    <meta attribute="field-description" inherit="false">
		       Chiffre Affaire
		    </meta>


</class>
</hibernate-mapping>

La clé primaire est définie dans la balise <id> : dans l’exemple, elle est basée sur une séquence. Il est possible de définir une clé composée en utilisant la balise <composite-id> :
	<composite-id>
      	<key-property name="attribut1"/>
     	 	<key-property name="attribut2"/>
	</composite-id>
  • Sauvegarde d’un nouvel objet dans la base de données :


L’exemple ci-dessous utilise la méthode saveOrUpdate() de la session hibernate.
org.hibernate.Session sess = sessFact.openSession();
Client c = new Client();
c.setName("John");
p.setTitre("Mr");
Transaction tx = sess.beginTransaction();
sess.saveOrUpdate(p);
tx.commit();
sess.close();

Pour une lecture illimitée hors ligne, vous avez la possibilité de télécharger gratuitement cet article au format PDF :
Hibernate-partie-2-configuration-et-utilisation.pdf

Réalisé sous la direction de , fondateur de CommentCaMarche.net.

A voir également

Dans la même catégorie

Hibernate (Part 2): configuration and use
Par deri58 le 21 mars 2013
Hibernate [Parte 2]: Configuración y uso
Par Carlos-vialfa le 10 novembre 2009
Publié par n00r. - Dernière mise à jour par christelle.b
Ce document intitulé «  Hibernate - Partie 2: configuration et utilisation  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.