1. 1 HIBERNATE - Persistance relationnelle en Java standard EXPOSE SUR LA TECHNOLOGIE : HIBERNATE Elaboré par : GhazouaniMahdi
2. 2 SOMMAIRE Qu’est-ce que Hibernate ? Historique Architecture Hibernate Avantages / Inconvénients Déploiement et Configuration d’Hibernate Mise en œuvre Conclusion
3. 3 Qu’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. 4 Historique Hibernate 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. 5 Architecture Ce 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.
7. 7 Avantages Gain 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.
8. 8 Inconvé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. 9 Dé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
10. 10 Configuration 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. 11 Mise en œuvre d’Hibernate (1) Définition des classes entités package 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. 12 Mise 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
13. 13 Mise 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 Session Session 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. 14 Mise en œuvre d’Hibernate (4) Requêtage Le SQL est utile si vous souhaitez utiliser les fonctionnalités spécifiques de votre base de données comme le mot clé CONNECT d'Oracle SQL HQL est totalement orienté objet, comprenant des notions d'héritage, de polymorphisme et d'association. HQL C’est une API(ensemble de fonctionnalités) d'interrogation par critères intuitive et extensible. Criteria
15. 15 Conclusion 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)