Téléchargement
illégal

Hibernate - Partie 2: configuration et utilisation


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();
Publié par n00r - Dernière mise à jour le 30 octobre 2009 à 14:53 par marlalapocket
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.
Suggestions
  •  Hibernate - Partie 2: configuration et utilisation
  •  How configurer et utiliser psx2psp v1.2 » Bonjour, salut les potos j'ai une superbe collection 2 super isos de jeux psone des trucs co par exempe parasite eve 2 et plein d'autres trucs super sympas que j'aimerais rejouer sur ma slim ,j'ai ete chez 1 poto ki avais le logi et arrivais a le...
  •  Probleme avec firefox sos[voir votre version (Résolu) » Meilleure réponse: Avec Firefox 3.0.3, solution permanente; Outils Options Avancé Réseau Paramètres (dans la boîte connexion) cochez : Détection automatique des paramètres de proxy pour ce réseau Et voilà
  •  [Spellforce ] quelle config ? (Résolu) » Bonjour, Voilà, je trouve les performances de mon PC médiocres avec Spellforce 2, aussi, j'aimerais savoir si certains d'entre vous y jouent et si oui, avec quelle config et quel réglages ? Ma config : Athlon XP 1700+@2135 2 Go RAM Dual Chan. Abit...
  •  2.98 ram sur win 7 64 bit (Résolu) » Bonjour, voila je viens d'installer windows 7 64 bit.il reconnais que j'ai bien 4 go de ram mais il m'en mais 2.98 utilisable. ya t'il une raison a cela ou il faut régler quelque chose comme dans le bios ? Configuration: intel core 2 duo 8500 3.16ghz...
  •  Mode Administrateur ou Utilisateur sous XP » Fiches pratiques : Lorsque vous installez le système d’exploitation de Windows, celui-ci, par défaut, crée automatiquement un compte Administrateur. Or, lors de votre installation, on ne trouve nulle part d'explications concernant la différence entre ce compte et un...
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?
Hibernate - Partie 1: Présentation
Taglibs - Partie 1: Présentation