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.
- Créez un fichier hibernate.cfg.xml, en copiant depuis le dossier de configuration du projet et en le modifiant
- 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>
- 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
- 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é
- 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();
}
}