Entity Produit
Objectifs :
- Création d'une entité.
- Création de fichier de configuration Hibernate (hinernate.cfg.xml).
- Utilisation des annotations (Entity, Table, Id, GeneratedValue, Column ...).
- Création des CRUD.
Énoncé :
On souhaite créer une application pour la gestion des produits, pour ce faire nous proposons le diagramme de classe suivant :
![h2](/images/articles/jee/hibernate/h2.png)
- Créer un projet JAVA sous Netbeans nommé « H1 », et rajouter les bibliothèques nécessaires (Hibernate-JPA et le Pilote de la base de données MySql).
- Créer l’entité Produit dans le package « ma.projet.entity », rajouter les annotations (Entity, Id, GeneratedValue, Column, Table…).
- Créer une base de données nommée « H1 » sous MySql.
- Créer le fichier de configuration Hibernate « hibernate.cfg.xml » dans le package « ma.exelib.projet.config ».
- Créer la classe HibernateUtil permettant de créer une instance de la classe « SessionFactory » dans le package « ma.exelib.projet.util ».
- Créer l’interface IDao dans le packahe « ma.exelib.projet.dao » :
L'interface IDao - Créer la classe service « ProduitService » qui implémente l’interface IDao dans le package « ma.exelib.projet.service » et implémenter les différentes méthodes :
La classe Service - Dans une classe de teste :
- Créer cinq produits,
- Afficher la liste des produits,
- Afficher les informations du produit dont id = 2,
- Supprimer le produit dont id = 3,
- Modifier les informations du produit dont id = 1,
- Afficher la liste des produits dont le prix est supérieur à 100 DH,
- Afficher la liste des produits commandés entre deux dates lus au clavier.
Structure du projet
![ppp0](/images/articles/jee/hibernate/ppp0.png)
L'entité Produit
package ma.exelib.projet.entity; import java.util.Date; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Temporal; import javax.persistence.TemporalType; /** * * @author Lachgar */ @Entity public class Produit { @Id @GeneratedValue private int id; private String marque; private String reference; @Temporal(TemporalType.DATE) private Date dateAchat; private double prix; private String Designation; public Produit() { } public Produit(String marque, String reference, Date dateAchat, double prix, String Designation) { this.marque = marque; this.reference = reference; this.dateAchat = dateAchat; this.prix = prix; this.Designation = Designation; } public Produit(int id, String marque, String reference, Date dateAchat, double prix, String Designation) { this.id = id; this.marque = marque; this.reference = reference; this.dateAchat = dateAchat; this.prix = prix; this.Designation = Designation; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getMarque() { return marque; } public void setMarque(String marque) { this.marque = marque; } public String getReference() { return reference; } public void setReference(String reference) { this.reference = reference; } public Date getDateAchat() { return dateAchat; } public void setDateAchat(Date dateAchat) { this.dateAchat = dateAchat; } public double getPrix() { return prix; } public void setPrix(double prix) { this.prix = prix; } public String getDesignation() { return Designation; } public void setDesignation(String Designation) { this.Designation = Designation; } }
Le fichier de configuration "hibernate.cfg.xml"
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/H1?zeroDateTimeBehavior=convertToNull</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.show_sql">true</property> <property name="hibernate.format_sql">true</property> <property name="hibernate.hbm2ddl.auto">update</property> <mapping class="ma.exelib.projet.entity.Produit"/> </session-factory> </hibernate-configuration>
La classe HibernateUtil
package ma.exelib.projet.util; import org.hibernate.cfg.AnnotationConfiguration; import org.hibernate.SessionFactory; /** * * @author Lachgar */ public class HibernateUtil { private static final SessionFactory sessionFactory; static { try { // Create the SessionFactory from standard (hibernate.cfg.xml) // config file. sessionFactory = new AnnotationConfiguration().configure("ma/exelib/projet/config/hibernate.cfg.xml").buildSessionFactory(); } catch (Throwable ex) { // Log the exception. System.err.println("Initial SessionFactory creation failed." + ex); throw new ExceptionInInitializerError(ex); } } public static SessionFactory getSessionFactory() { return sessionFactory; } }
L'interface IDao
package ma.exelib.projet.dao; import java.util.List; /** * * @author Lachagr */ public interface IDao<T> { boolean create(T o); boolean update(T o); boolean delete(T o); T findById(int id); List<T> findAll(); }
La classe ProduitService
package ma.exelib.projet.service; import java.util.List; import ma.exelib.projet.entity.Produit; import ma.exelib.projet.dao.IDao; import ma.exelib.projet.util.HibernateUtil; import org.hibernate.Session; /** * * @author Lachgar */ public class ProduitService implements IDao<Produit> { @Override public boolean create(Produit o) { Session session = HibernateUtil.getSessionFactory().openSession(); session.beginTransaction(); session.save(o); session.getTransaction().commit(); return true; } @Override public boolean update(Produit o) { Session session = HibernateUtil.getSessionFactory().openSession(); session.beginTransaction(); session.update(o); session.getTransaction().commit(); return true; } @Override public boolean delete(Produit o) { Session session = HibernateUtil.getSessionFactory().openSession(); session.beginTransaction(); session.delete(o); session.getTransaction().commit(); return true; } @Override public Produit findById(int id) { Produit produit = null; Session session = HibernateUtil.getSessionFactory().openSession(); session.beginTransaction(); produit = (Produit) session.get(Produit.class, id); session.getTransaction().commit(); return produit; } @Override public List<Produit> findAll() { List<Produit> produits = null; Session session = HibernateUtil.getSessionFactory().openSession(); session.beginTransaction(); produits = session.createQuery("from Produit").list(); session.getTransaction().commit(); return produits; } }
La classe de Test
package ma.exelib.projet.test; import java.util.Date; import ma.exelib.projet.entity.Produit; import ma.exelib.projet.service.ProduitService; /** * * @author lachgar */ public class Test { public static void main(String[] args) { //Creation des produits ProduitService ps = new ProduitService(); ps.create(new Produit("TOSHIBA", "zzaa123", new Date("2016/01/08"), 6000, "PC TOSHIBA")); ps.create(new Produit("HP", "EERR678", new Date("2016/02/09"), 2000, "PC HP")); ps.create(new Produit("SONY VAIO", "AQWZSX", new Date("2015/09/23"), 6000, "PC SONY VAIO")); ps.create(new Produit("DELL", "AZERTY", new Date("2016/02/12"), 6000, "PC DELL")); ps.create(new Produit("SONY", "qsdERT", new Date("2016/02/02"), 6000, "PC SONY")); //Liste des produits for (Produit e : ps.findAll()) { System.out.println(e.getMarque()); } //Les informations du produit dont id = 2 for (Produit p : ps.findAll()) { if (p.getId() == 2) { System.out.println(p.getId() + " , " + p.getMarque() + " , " + p.getReference() + " , " + p.getDateAchat() + " , " + p.getPrix() + " , " + p.getDesignation()); } } //Supprimer le produit dont id = 3 ps.delete(ps.findById(3)); //Modifier les informations du produit dont id = 1, Produit p = ps.findById(1); if (p != null) { p.setMarque("HP"); p.setReference("MMMPPP"); p.setDateAchat(new Date("2015/09/08")); p.setPrix(5000); p.setDesignation("PC HP"); ps.update(p); } //Afficher la liste des produits dont le prix est supérieur à 100 DH for (Produit pp : ps.findAll()) { if (pp.getPrix() > 100) { System.out.println("" + pp.getMarque()); } } } }
Hibernate:
insert
into
Produit
(Designation, dateAchat, marque, prix, reference)
values
(?, ?, ?, ?, ?)
Hibernate:
insert
into
Produit
(Designation, dateAchat, marque, prix, reference)
values
(?, ?, ?, ?, ?)
Hibernate:
insert
into
Produit
(Designation, dateAchat, marque, prix, reference)
values
(?, ?, ?, ?, ?)
Hibernate:
insert
into
Produit
(Designation, dateAchat, marque, prix, reference)
values
(?, ?, ?, ?, ?)
Hibernate:
insert
into
Produit
(Designation, dateAchat, marque, prix, reference)
values
(?, ?, ?, ?, ?)
Hibernate:
select
produit0_.id as id1_0_,
produit0_.Designation as Designat2_0_,
produit0_.dateAchat as dateAcha3_0_,
produit0_.marque as marque4_0_,
produit0_.prix as prix5_0_,
produit0_.reference as referenc6_0_
from
Produit produit0_
TOSHIBA
HP
SONY VAIO
DELL
SONY
Hibernate:
select
produit0_.id as id1_0_,
produit0_.Designation as Designat2_0_,
produit0_.dateAchat as dateAcha3_0_,
produit0_.marque as marque4_0_,
produit0_.prix as prix5_0_,
produit0_.reference as referenc6_0_
from
Produit produit0_
2 , HP , EERR678 , 2016-02-09 , 2000.0 , PC HP
Hibernate:
select
produit0_.id as id1_0_0_,
produit0_.Designation as Designat2_0_0_,
produit0_.dateAchat as dateAcha3_0_0_,
produit0_.marque as marque4_0_0_,
produit0_.prix as prix5_0_0_,
produit0_.reference as referenc6_0_0_
from
Produit produit0_
where
produit0_.id=?
Hibernate:
delete
from
Produit
where
id=?
Hibernate:
select
produit0_.id as id1_0_0_,
produit0_.Designation as Designat2_0_0_,
produit0_.dateAchat as dateAcha3_0_0_,
produit0_.marque as marque4_0_0_,
produit0_.prix as prix5_0_0_,
produit0_.reference as referenc6_0_0_
from
Produit produit0_
where
produit0_.id=?
Hibernate:
update
Produit
set
Designation=?,
dateAchat=?,
marque=?,
prix=?,
reference=?
where
id=?
Hibernate:
select
produit0_.id as id1_0_,
produit0_.Designation as Designat2_0_,
produit0_.dateAchat as dateAcha3_0_,
produit0_.marque as marque4_0_,
produit0_.prix as prix5_0_,
produit0_.reference as referenc6_0_
from
Produit produit0_
HP
HP
DELL
SONY
Sélectionnez le fichier à afficher.
|