NetBeans, Une application Web : Hibernate (partie II)

Et bien voici donc la suite, après notre première application web avec NetBeans, la création d'un pool et la connection à une base donnée, nous allons maintenant passer aux choses sérieuses avec l'introduction de Hibernate dans notre projet afin de travailler plus efficacement avec notre base via java et aussi nous permettre de changer de base de données sans rien toucher au code !

Nous allons donc commencer par configurer Hibernate (quand on fait de la programmation Java on configure beaucoup, je ne connais pas un autre langage avec autant de fichiers de configuration ! ;-) ).

Sur Hibernate.org, téléchargez la dernière version, la 3.0. Dans notre dossier « projects » que nous avons créé dans notre installation de NetBeans nous allons faire un nouveau dossier pour y stocker toutes nos librairies. Faites donc le dossier « netbeans/projects/lib/ » et mettez y toutes les librairies utiles pour faire fonctionner Hibernate. Vous les trouverez à la racine et dans le dossier « lib » de l'archive Hibernate. Nous allons prendre seulement ce dont nous avons besoin :

hibernate.jar, tous les commons-*.jar, le jdbc2.0.jar, antlr, asm, cglib, dom4j, ehcache, jta, log4j

Ensuite, dans votre projet, clic droit sur le dossier « Librairies », puis « add... » puis cliquez sur « Manage librairies ». Je vous déconseille d'être bordélique à ce niveau là, mieux vaut bien ranger ses librairies dès le départ. Cliquez sur « new librairie » et faites en une pour Hibernate, ensuite dans « classpath » cliquez sur « add jar's » et mettez :

hibernate, antlr, asm, cglib, dom4j, ehcache

Faites de même avec Commons en mettant dedans les commons*.jar, puis une autre pour Log4j, une autre pour JTA ...etc...

A la fin vous devriez finir avec, au niveau de vos libraires dans la colonne de gauche, Hibernate, Log4j, JTA, Commons. Ajoutez par précautions une librairie avec le driver de votre base de données (ici j'ai fait une librairie MySQL et le JDBC2.0.jar).

Voilà, fermez la fenêtre de gestion des JAR's, vous vous retrouvez dans « add ... », choisissez les packages que vous avez créé et cliquez sur « add library », NetBeans va les ajouter à votre projet et elles vont apparaître sous leur dossier.

Ouf, voilà, c'est fait ! Vous avez rien compris ? Relisez ! ;-)

Maintenant nous allons nous occuper de la configuration de Hibernate. Faites un clic droit sur « source packages » et puis « new -> xml document ». Nommez votre fichier « hibernate.cfg » (NetBeans va rajouter l'extension automatiquement ne la mettez pas) et copier/coller le code suivant dedans :

<?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="connection.datasource">
           java:comp/env/jdbc/mabase
        </property>
        <property name="show_sql">true</property>
        <property name="dialect">
              org.hibernate.dialect.MySQLDialect
        </property>
        <! Mapping files >
        <mapping resource="User.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

Ce que nous avons là est un fichier de configuration assez minimal, il dit à Hibernate d'utiliser notre Datasource, d'afficher les messages SQL, d'utiliser le dialecte MySQL (changez cela en fonction de votre BDD, consultez la doc de Hibernate pour connaître le dialecte qui correspond à votre base). Enfin nous avons créé un mapping vers une ressource « user » qui va nous servir à utiliser notre table Users de la dernière fois. En effet, dans Hibernate vous devez définir un fichier de configuration par objet, celui utilisant des POJO, des beans tout simples quoi, pour mapper les données avec la base. Hibernate se charge de remplir ces objets avec vos données, ou bien de les envoyer dans la base.

Voyons cela.

Avec la même méthode que pour le fichier de configuration de Hibernate nous allons faire celui de notre objet « User », créez le fichier « User.hbm.xml » et faites en sorte qu'il ressemble à cela :

<?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="com.bourzeix.hibernate.User" table="users">
        <! l'ID de la table. >
        <id name="id" type="int" column="id" unsaved-value="0">
            <generator class="identity"/>
        </id>
        <! le nom >
        <property name="nom">
            <column name="nom" length="55" not-null="true"/>
        </property>
        <! le prenom >
        <property name="prenom">
            <column name="prenom" length="55" not-null="true"/>
        </property>
    </class>
</hibernate-mapping>

Ce fichier sert à faire le lien entre votre POJO et Hibernate. Ici on dit quel est le Bean (« com.bourzeix.hibernate.User ») et à quelle table il se rapporte, puis nous définissons ses colonnes pour qu'elles soient prise en charge par les Getter et Setter du Bean, nous avons donc ici « ID » qui est l'identifiant (d'où le generator class identity) et le « NOM » et le « PRENOM ».

Nous allons maintenant créer notre classe « User ». Faites « file -> new javaBean comp. » pour créer une classe de type Bean, dans par exemple « com.bourzeix.hibernate » et appelez la « User ». Dans la vue projet, dépliez votre classe et faites clic-droit sur « bean pattern » puis « add property », là ajoutez :

    private int id;
    private String prenom;
    private String nom;

Cela va générer directement le code pour le Bean qui doit ressembler à cela ensuite :

/*
 * User.java
 *
 * Created on 22 mai 2005, 13:45
 */

package com.bourzeix.hibernate;

import java.io.Serializable;

/**
 * @author Stéphane Bourzeix
 */
public class User extends Object implements Serializable {
    

    private int id;
    private String prenom;
    private String nom;
    
    public User() {
        
    }
    

    public int getId(){
        return id;
    }
    public void setId(int value){
        id = value;
    }
    public String getPrenom(){
        return prenom;
    }
    public void setPrenom(String value){
        prenom = value;
    }
    public String getNom(){
        return nom;
    }
    public void setNom(String value){
        nom = value;
    }   

    
    
}

Et voilà ! Toutes les déclarations et la configuration de Hibernate est complète, maintenant un petit « Compile » et un petit « Run » et votre projet doit démarrer sans aucun problème !

La prochaine fois nous ferons enfin une servlet qui utilisera tout ce que nous avons fait jusque là, et qui ira créer des enregistrements et les lire dans la base de données grâce à notre Bean « User » et à Hibernate !

A suivre ...

Haut de page