Configuration et utilisation du framework Hibernate

Configuration de l'environnement

I. Création d'un projet et importation des bibliothèques

Nécessitez d'importer deux bibliothèques : une pour Hibernate et une pour JDBC.

Bibliothèques Hibernate

Assurez-vous d'importer tous les fichiers JAR requis

II. Configuration de Hibernate.

  1. Créez un fichier hibernate.cfg.xml, en copiant depuis le dossier de configuration du projet et en le modifiant
  2. Configruez le fichier hibernate.cfg.xml


<hibernate-configuration>
    <session-factory>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <!-- Dialecte de la base de données -->
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property><!-- Pilote JDBC -->
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password"></property>
        <property name="hibernate.connection.url">jdbc:mysql://127.0.0.1:3306/myzy?characterEncoding=GBK</property> <!-- URL de la base de données -->
        <property name="show_sql">true</property> <!-- Affiche les instructions SQL dans la console -->
            <!-- Chargement des mappings de table  -->
        <mapping resource="com/itnba/maya/model/Produit.hbm.xml"/>
        
    </session-factory>
</hibernate-configuration>

  1. Les valeurs de configuration peuvent être trouvées dans project/etc/hibernate.propertise

III. Préparation de la base de données

IV. Préparation des entités (recommandation : utiliser des types de référence. Recommandation : nom de classe et nom de propriété cohérents avec noms de colonnes)

package com.exemple.hibernate.modele;

public class Produit {
    public String getIdentifiant() {
        return identifiant;
    }
    public void setIdentifiant(String identifiant) {
        this.identifiant = identifiant;
    }
    public String getNom() {
        return nom;
    }
    public void setNom(String nom) {
        this.nom = nom;
    }
    public Double getPrix() {
        return prix;
    }
    public void setPrix(Double prix) {
        this.prix = prix;
    }
    public String getOrigine() {
        return origine;
    }
    public void setOrigine(String origine) {
        this.origine = origine;
    }
    public Integer getQuantite() {
        return quantite;
    }
    public void setQuantite(Integer quantite) {
        this.quantite = quantite;
    }
    public String getImage() {
        return image;
    }
    public void setImage(String image) {
        this.image = image;
    }
    private String identifiant;
    private String nom;
    private Double prix;
    private String origine;
    private Integer quantite;
    private String image;

}

V. Préparation des fichiers de mapping NomDeLaClasse.hbm.xml Exemple: Produit.hbm.xml

  1. Créez : fichier NomDeLaClasse.hbm.xml. Copiez depuis le dossier de configuration du projet et modifiez

Placer dans le même package que la classe d'entité

  1. Configurez le fichier NomDeLaClasse.hbm.xml
<?xml version="1.0"?>

<hibernate-mapping default-lazy="false" package="com.exemple.hibernate.modele">    <!-- Import du package -->

    <class name="Produit" table="Produit"> <!-- Nom de la table -->
        <id name="identifiant">    <!-- Clé primaire -->                        
            <generator class="assigned"/><!-- Si clé auto-incrémentée, utiliser class="native" -->
        </id>
        <!-- Correspondance avec les champs de la table -->
        <property name="nom"/>
        <property name="prix"/>
        <property name="origine"/> 
        <property name="quantite"/>
        <property name="image"/>
    
    </class>   
</hibernate-mapping>

VI. Implémentation du code

Note : La session ici n'est pas la session web. La session web représente la session entre le client et le serveur web. La session ici représente la session entre l'application et la base de données, gérée par Hibernate.

Ajout

package com.exemple.hibernate.test;
import java.util.List;

import org.hibernate.*;
import org.hibernate.cfg.*;

import com.exemple.hibernate.modele.Produit;

public class DemoHibernate {

    public static void main(String[] args) {
        // Lecture de la configuration hibernate.cfg.xml, chargement des bibliothèques Hibernate
        Configuration configuration=new Configuration().configure();
        // Génération de la fabrique de session à partir de la configuration
        SessionFactory usine= configuration.buildSessionFactory();
        // Création d'une session avec la fabrique
        Session session =usine.openSession();
        // Ajout
        //1. Création de l'objet
                Produit element = new Produit();
                element.setIdentifiant("p002");
                element.setNom("Mangue");
                element.setOrigine("Boshan");
                element.setPrix(10.0);
                element.setQuantite(200);
                element.setImage("Non spécifié");

        //2. Utilisation de session.save() pour persister en base de données
                try{
                    session.beginTransaction();
                    session.save(element);
                    session.getTransaction().commit();
                }
                catch(Exception ex){
                    session.getTransaction().rollback();
                }
                
        session.close();
    }

}

Requête

package com.exemple.hibernate.test;
import java.util.List;

import org.hibernate.*;
import org.hibernate.cfg.*;

import com.exemple.hibernate.modele.Produit;

public class DemoHibernate {

    public static void main(String[] args) {
        // Lecture de la configuration hibernate.cfg.xml, chargement des bibliothèques Hibernate
        Configuration configuration=new Configuration().configure();
        // Génération de la fabrique de session à partir de la configuration
        SessionFactory usine= configuration.buildSessionFactory();
        // Création d'une session avec la fabrique
        Session session =usine.openSession();         
        // Requêtes
                // Requête pour un seul élément
                Produit element=session.get(Produit.class, "k001");
                System.out.println(element.getNom()+element.getPrix()+element.getQuantite());
                
                // Requête pour tous les éléments
                List<Produit> liste = session.createQuery("from Produit").getResultList();
                for(Produit p:liste){
                    System.out.println(p.getNom()+p.getPrix()+p.getQuantite());
                }
        session.close();
    }

}

Suppression

package com.exemple.hibernate.test;
import java.util.List;

import org.hibernate.*;
import org.hibernate.cfg.*;

import com.exemple.hibernate.modele.Produit;

public class DemoHibernate {

    public static void main(String[] args) {
        // Lecture de la configuration hibernate.cfg.xml, chargement des bibliothèques Hibernate
        Configuration configuration=new Configuration().configure();
        // Génération de la fabrique de session à partir de la configuration
        SessionFactory usine= configuration.buildSessionFactory();
        // Création d'une session avec la fabrique
        Session session =usine.openSession();                
        // Suppression
                // Récupération d'abord
                Produit element = session.load(Produit.class,"k002");// get et load sont tous les deux valides
                if(element!=null){
                    session.beginTransaction();
                    // Suppression et validation en base
                    session.delete(element);
                    session.getTransaction().commit();
                }
        session.close();
    }

}

Modification

package com.exemple.hibernate.test;
import java.util.List;

import org.hibernate.*;
import org.hibernate.cfg.*;

import com.exemple.hibernate.modele.Produit;

public class DemoHibernate {

    public static void main(String[] args) {
        // Lecture de la configuration hibernate.cfg.xml, chargement des bibliothèques Hibernate
        Configuration configuration=new Configuration().configure();
        // Génération de la fabrique de session à partir de la configuration
        SessionFactory usine= configuration.buildSessionFactory();
        // Création d'une session avec la fabrique
        Session session =usine.openSession();
        // Modification
                //1. Récupération
                Produit element = session.load(Produit.class,"p002");
                
                if(element != null){
                    session.beginTransaction();
                    //2. Modification
                    element.setNom("Pastèque");
                    element.setPrix(11.1);
                    element.setQuantite(99);
                    //3. Validation
                    session.update(element);
                    session.getTransaction().commit();
                }
                
        session.close();
    }

}

Étiquettes: Hibernate ORM Java persistance JDBC

Publié le 3 août à 17h31