1HIBERNATE - Persistancerelationnelle en Java standardEXPOSE SUR LA TECHNOLOGIE :HIBERNATE Elaboré par : GhazouaniMahdi
2SOMMAIREQu’est-ce que Hibernate ?HistoriqueArchitecture HibernateAvantages / InconvénientsDéploiement et Configuration d’HibernateMise en œuvre Conclusion
3Qu’est-ce que Hibernate ?Hibernate est un projet ‘Open Source’ visant à proposer un outil de mapping entre les objets et  les données dans une base de données  relationnelle.Ce projet ne repose sur aucun standard mais il est très populaire notamment à cause de ses bonnes performances et de son ouverture avec de nombreuses bases de données.Hibernate apporte une solution aux problèmes d'adaptation entre le paradigme objet et les SGBD en remplaçant les accès à la base de données par des appels à des méthodes objet de haut niveau.
4HistoriqueHibernate a été développé par un groupe de développeurs Java dirigés par Gavin King.L'entreprise JBoss (maintenant une division de Red Hat) a embauché les développeurs principaux d'Hibernate et a travaillé avec eux afin de maintenir et développer le produit.
5ArchitectureCe type de technologie peut être appelé framework de mapping objet-relationnel ou de persistance objet des données. La couche d'accès aux données.Le lien entre les classes exposées et la source physique des données (souvent une base de données relationnelle) est définie par un fichier xml. D'où mapping objet-relationnel.
6Schéma de fonctionnement
7AvantagesGain du temps si on utilise des outils pour générer automatiquement la base de données et le code.	Les objets métiers sont plus faciles à manipuler.	Peu de dépendance envers une base de données précise.
8Inconvénients	Nécessite d'apprendre à l'utiliser (son utilisation n’est pas fondamentale)	Tous les problèmes ne sont pas résolus car Hibernate est une technologie jeune
9Déploiement d’Hibernate	Téléchargez et installez J2SE 1.4 SDK. 	Téléchargez et installez Eclipse	Télécharger Hibernate : "http://hibernatesynch.sourceforge.net/" 	Ouvrir Eclipse et importer le dossier contenant Hibernate
10Configuration d’Hibernate<session-factory<propertyname="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property><property name="hibernate.connection.driver_class">org.postgresql.Driver</property><propertyname="hibernate.connection.url">jdbc:postgresql://localhost/e-commerce</property>    <property name="hibernate.connection.username">postgres</property>    <property name="hibernate.connection.password">administrateur</property>…	La référence du SGBD utilisée	Informations de connexion (Driver JDBC, url de connexion, login, mot de passe)	Le mapping entre le modèle de classes et la base de données
11Mise en œuvre d’Hibernate (1)Définition des classes entitéspackage hello;public class Message {private Long id;private String text;private Message nextMessage;private Message() {}public Message(String text) {      this.text = text;   }/* getters, setters */}
12Mise en œuvre d’Hibernate (2)create table Message (id INT not null,String text,Message nextMessage,…primary key (id))	Mapping des entités dans la base de données<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC   "-//Hibernate/Hibernate Mapping DTD//EN"   "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"><hibernate-mapping>   <class name="hello.Message“ table="MESSAGES">      <id name="id“ column="MESSAGE_ID">         <generator class="increment"/>      </id>      <property name="text“ column="MESSAGE_TEXT"/>      <many-to-one name="nextMessage“ cascade="all“    	column="NEXT_MESSAGE_ID"/>   </class></hibernate-mapping>java  net.sf.hibernate.tool.hbm2ddl.SchemaExport  --text --format --output=ex2bis.ddl delimeter=x *.hbm.xml
13Mise en œuvre d’Hibernate (3)insert into MESSAGES (MESSAGE_ID,  MESSAGE_TEXT, NEXT_MESSAGE_ID)values (1, 'Hello World', null);Update MESSAGES Set MESSAGE_TEXT="Bonjour"  where MESSAGE_ID="1" ;Manipulation des données via l’objet    Hibernate SessionSession session = getSessionFactory().openSession();Transaction tx = session.beginTransaction();Message message = new Message("Hello World");session.save(message);message.setMESSAGE_TEXT("Bonjour");tx.commit();session.close();
14Mise en œuvre d’Hibernate (4)RequêtageLe SQL est utile si vous souhaitez utiliser les fonctionnalités spécifiques de votre base de données comme le mot clé CONNECT d'OracleSQLHQL est totalement orienté objet, comprenant des notions d'héritage, de polymorphisme et d'association.HQLC’est une API(ensemble de fonctionnalités) d'interrogation par critères intuitive et extensible.Criteria
15Conclusion	Optimisation du temps de développement du programmeur. 	Des applications plus homogènes	Des applications facilement migrables aussi (pensez que pour changer de base de données, il suffit juste de toucher à hibernate.cfg.xml)	Technologie prometteuse (Sortie d’une version NHIBERNATE compatible avec DOT NET)
16Netographiehttp://fr.wikipedia.orghttp://www.hibernate.orghttp://developpez.com/tutoriel/java/eclipse/hibernate
17

Hibernate

  • 1.
    1HIBERNATE - Persistancerelationnelleen Java standardEXPOSE SUR LA TECHNOLOGIE :HIBERNATE Elaboré par : GhazouaniMahdi
  • 2.
    2SOMMAIREQu’est-ce que Hibernate?HistoriqueArchitecture HibernateAvantages / InconvénientsDéploiement et Configuration d’HibernateMise en œuvre Conclusion
  • 3.
    3Qu’est-ce que Hibernate?Hibernate est un projet ‘Open Source’ visant à proposer un outil de mapping entre les objets et les données dans une base de données relationnelle.Ce projet ne repose sur aucun standard mais il est très populaire notamment à cause de ses bonnes performances et de son ouverture avec de nombreuses bases de données.Hibernate apporte une solution aux problèmes d'adaptation entre le paradigme objet et les SGBD en remplaçant les accès à la base de données par des appels à des méthodes objet de haut niveau.
  • 4.
    4HistoriqueHibernate a étédéveloppé par un groupe de développeurs Java dirigés par Gavin King.L'entreprise JBoss (maintenant une division de Red Hat) a embauché les développeurs principaux d'Hibernate et a travaillé avec eux afin de maintenir et développer le produit.
  • 5.
    5ArchitectureCe type detechnologie peut être appelé framework de mapping objet-relationnel ou de persistance objet des données. La couche d'accès aux données.Le lien entre les classes exposées et la source physique des données (souvent une base de données relationnelle) est définie par un fichier xml. D'où mapping objet-relationnel.
  • 6.
  • 7.
    7AvantagesGain du tempssi on utilise des outils pour générer automatiquement la base de données et le code. Les objets métiers sont plus faciles à manipuler. Peu de dépendance envers une base de données précise.
  • 8.
    8Inconvénients Nécessite d'apprendre àl'utiliser (son utilisation n’est pas fondamentale) Tous les problèmes ne sont pas résolus car Hibernate est une technologie jeune
  • 9.
    9Déploiement d’Hibernate Téléchargez etinstallez J2SE 1.4 SDK. Téléchargez et installez Eclipse Télécharger Hibernate : "http://hibernatesynch.sourceforge.net/" Ouvrir Eclipse et importer le dossier contenant Hibernate
  • 10.
    10Configuration d’Hibernate<session-factory<propertyname="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property><property name="hibernate.connection.driver_class">org.postgresql.Driver</property><propertyname="hibernate.connection.url">jdbc:postgresql://localhost/e-commerce</property> <property name="hibernate.connection.username">postgres</property> <property name="hibernate.connection.password">administrateur</property>… La référence du SGBD utilisée Informations de connexion (Driver JDBC, url de connexion, login, mot de passe) Le mapping entre le modèle de classes et la base de données
  • 11.
    11Mise en œuvred’Hibernate (1)Définition des classes entitéspackage hello;public class Message {private Long id;private String text;private Message nextMessage;private Message() {}public Message(String text) { this.text = text; }/* getters, setters */}
  • 12.
    12Mise en œuvred’Hibernate (2)create table Message (id INT not null,String text,Message nextMessage,…primary key (id)) Mapping des entités dans la base de données<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"><hibernate-mapping> <class name="hello.Message“ table="MESSAGES"> <id name="id“ column="MESSAGE_ID"> <generator class="increment"/> </id> <property name="text“ column="MESSAGE_TEXT"/> <many-to-one name="nextMessage“ cascade="all“ column="NEXT_MESSAGE_ID"/> </class></hibernate-mapping>java net.sf.hibernate.tool.hbm2ddl.SchemaExport --text --format --output=ex2bis.ddl delimeter=x *.hbm.xml
  • 13.
    13Mise en œuvred’Hibernate (3)insert into MESSAGES (MESSAGE_ID, MESSAGE_TEXT, NEXT_MESSAGE_ID)values (1, 'Hello World', null);Update MESSAGES Set MESSAGE_TEXT="Bonjour"  where MESSAGE_ID="1" ;Manipulation des données via l’objet Hibernate SessionSession session = getSessionFactory().openSession();Transaction tx = session.beginTransaction();Message message = new Message("Hello World");session.save(message);message.setMESSAGE_TEXT("Bonjour");tx.commit();session.close();
  • 14.
    14Mise en œuvred’Hibernate (4)RequêtageLe SQL est utile si vous souhaitez utiliser les fonctionnalités spécifiques de votre base de données comme le mot clé CONNECT d'OracleSQLHQL est totalement orienté objet, comprenant des notions d'héritage, de polymorphisme et d'association.HQLC’est une API(ensemble de fonctionnalités) d'interrogation par critères intuitive et extensible.Criteria
  • 15.
    15Conclusion Optimisation du tempsde développement du programmeur. Des applications plus homogènes Des applications facilement migrables aussi (pensez que pour changer de base de données, il suffit juste de toucher à hibernate.cfg.xml) Technologie prometteuse (Sortie d’une version NHIBERNATE compatible avec DOT NET)
  • 16.
  • 17.