SlideShare ist ein Scribd-Unternehmen logo
1 von 35
Downloaden Sie, um offline zu lesen
Ministère de l’Enseignement
           Supérieur
             *** * ***
 Université du 7 novembre à
           Carthage
             *** * ***
Institut National des Sciences
Appliquées et de Technologie        Institut National des
                                 Sciences Appliquées et de
                                        Technologie




                Hibernate 3



                                                             1
1
    • Etat de l’art


2
    • Hibernate: C’est quoi?


3
    • Hibernate : Pourquoi?


4   • Hibernate 3: Nouveautés?

5   • Hibernate 3: Fonctions?

6
    • Conslusion




                                 2
Etat de l’art   C’est quoi?   Pourquoi?   Nouveautés?   Fonctions?   Conclusion




•     Premier service complet de persistance

•     Gestion de la persistance par conteneur (CMP) ou
      par le bean (BMP)

•     Techniquement, ça ne permet pas de gérer les
      relations entre entités ainsi que les lourdeurs des
      spécifications d’EJB

•     Succès EJB2.0 ( interfaces locale, gestion de
      relations)
                                                                                      3
Etat de l’art   C’est quoi?   Pourquoi?   Nouveautés?   Fonctions?   Conclusion




• Fin 1990, ORM propriétaire de WebGain
  puis Oracle

• Puissance relationnelle

• Flexibilité

• Plus d’efficacités que les beans entités

• Une complexité de mise en œuvre
                                                                                   4
Etat de l’art   C’est quoi?   Pourquoi?   Nouveautés?   Fonctions?   Conclusion




• 1999, une norme de persistance
  transparente, libre et unique

• Mapping d’objet relationnel

• Abstraction de stockage de données

• Logique d’interrogation, JDOQL, peu efficace et
  très complexe

• Echec de la première version (spécifications
  incomplètes)
                                                                                  5
Etat de l’art   C’est quoi?   Pourquoi?   Nouveautés?   Fonctions?   Conclusion




      Les données importent plus que le code

      JDBC, ça craint!
           -Visant le développement du
      système
           -Manque de fonctionnalités
                                                         Persistance
                                                          Persistance
                                                             non
      Lourdeur d’usage                                   transparente
                                                        transparente

      Objets ≠ relations (la guerre!)
                                                                                  6
Etat de l’art   C’est quoi?   Pourquoi?   Nouveautés?   Fonctions?   Conclusion




                                                                                  7
Etat de l’art   C’est quoi?   Pourquoi?   Nouveautés?   Fonctions?   Conclusion




                                                “An object is sent to
                                                hibernation to a
                                                RDBMS, when it
                                                comes back ( if it
                                                does ) it wakes up
                                                from his hibernation.”


                                                “If an object is sent to
                                                a DB it may wait for a
Hibernate                                       week, a month, a
                                                year, before it gets
                                                fetched again hence it
                                                was sent to
                                                hibernation.”
                                                                                  8
Etat de l’art   C’est quoi?   Pourquoi?   Nouveautés?   Fonctions?   Conclusion




                              Outil mapping objet/relationnel en Java
Définition & Historique

                          (ORM)

                                   Novembre 2001, Gavin King

                                   Octobre 2003, rejoint JBOSS (Red Hat)

                                   Standardisé par spécifications JPA/EJB3
                          Entity

                                   Décembre 2005, Hibernate 3.1

                                Aout 2011, implémentation du standard de
                          persistance EJB 3                             9
Etat de l’art   C’est quoi?   Pourquoi?   Nouveautés?     Fonctions?    Conclusion

                  Objet
               temporaire                                                    Objets persistants
                                                                           implémentés sous la
                                                                             forme de POJO
Architecture




                                                                                Objet mono-threadé, à
                                                                                     durée de vie
    Obtention des
                                                                                 courte, représentant
  instances session
                                                                               une conversation entre
(EntityManagerFactor
                                                                              l'application et l'entrepôt
    y: JPA): mono-
                                                                                   de persistance
        threadé

                                                                                                        10
Etat de l’art   C’est quoi?   Pourquoi?   Nouveautés?   Fonctions?   Conclusion




       A la différence de hibernate.properties qui ne
contient que des paramètres de configuration, le fichier
hibernate.cfg.xml peut également spécifier
l’emplacement des documents de mapping.


• Propriétés relatifs à la Base de Données (url, driver, username,
  password...)

• Les différents déclarations : cache, pool, dialect,...

• L’emplacement des fichiers de mapping (beans, cas des
  annotations)
                                                                                    11
Etat de l’art   C’est quoi?   Pourquoi?   Nouveautés?   Fonctions?   Conclusion




                                                                                  12
Etat de l’art   C’est quoi?   Pourquoi?   Nouveautés?   Fonctions?   Conclusion




                   Remplacement des fichiers XML par des
             annotations JDK 5.0 implémentant les annotations du
             standard JPA et les annotations spécifiques à
             Hibernate
             @Entity: déclarer une classe comme étant persistante
Annotation




             @Id: Indiquer l’identifiant
             @GeneratedValue(strategy = GenerationType.AUTO) : définir la
             stratégie de génération de l’identifiant

             Annotations concernant les collections
             @Where : (appliquée à l'entité cible)

             La stratégie de suppression en cascade avec
             @OnDelete(action=OnDeleteAction.CASCADE)

                                                                                                  13
Etat de l’art   C’est quoi?   Pourquoi?   Nouveautés?   Fonctions?   Conclusion




             @Cacheable: Entité sera tenu en compte pour le
             cacheing
             @Cache(usage=CacheConcurrencyStrategy.READ_
             ONLY) : Définir la stratégie du cache
Annotation




             @Embeddable: (pour la classe)
             Ne pas considérer l’entité comme étant une table à
             créer (jointure de colomne)
             @Embedded: (au niveau de l’attribut)

             @Transient: Enlever l’aspect persistant d’un attribut

                                                                                                14
Etat de l’art   C’est quoi?   Pourquoi?   Nouveautés?   Fonctions?   Conclusion
Cycle de vie d’objet




                                                                                                         15
Etat de l’art   C’est quoi?   Pourquoi?   Nouveautés?   Fonctions?   Conclusion




       Trop de temps passé par
le développeur pour interagir avec la base de
données!

       A votre avis, quel est le % de temps pour
écrire du code afin de gérer l’accès à une BD?

                                 Moins de 20%
                                 Environ 50%
                                 Environ 70%
                                 Presque 90%

Rang estimé entre 30-70%
Donc 30 à 70% du temps de développement
                                                                                  16
Etat de l’art    C’est quoi?   Pourquoi?   Nouveautés?   Fonctions?   Conclusion




                            Génération du code SQL

                            Utilisation du langage de requêtes :
Avantages




              HQL

                            Persistance transparente

                            Récupération de données optimisée

                   Portabilité du code, changement de
              base de données
                                                                                               17
Etat de l’art   C’est quoi?   Pourquoi?   Nouveautés?   Fonctions?   Conclusion
Inconvénients



                          « NO tool can solve ALL
                          problems », Gavin King

                          Hibernate est une technologie jeune

                          Nécessité d’apprendre à l’utiliser




                                                                                                  18
Etat de l’art   C’est quoi?   Pourquoi?   Nouveautés?   Fonctions?   Conclusion




          • Les API Criteria
          • La gestion du flush manuel
          • Mécanismes d’attachement et détachements
            d’objets
          • Filtrage dynamique des résultats
          • Gestion du cache de second niveau
          • Cascade « delete-orphan »


Version 3.2.x d’Hibernate : implémentation du standard de
persistance EJB 3.0 et Java Persistence API (JPA)


JPA est une spécification/standard à respecter , Hibernate est
un Framework
                                                                                   19
Etat de l’art    C’est quoi?   Pourquoi?   Nouveautés?   Fonctions?   Conclusion




                Fetching                        Cacheing

                Filtres                         Sécurité



                                                                                   20
Etat de l’art   C’est quoi?   Pourquoi?   Nouveautés?   Fonctions?   Conclusion




           Différer au maximum le chargement des objets
           impliqués dans une relation d’associations, ou d’une
           collection.
Fetching




           • Défini par défaut, Hibernate 3.

           • Son contraire, Eager Loading

                  Un moyen de trouver des objets d'une
           certaine classe et un certain nombre d'associations
           avec une réduction de requêtes.                                                     21
Etat de l’art   C’est quoi?   Pourquoi?   Nouveautés?   Fonctions?   Conclusion
Cacheing




           N.B. : Les caches ne sont jamais avertis des modifications faites
           dans la base de données.
                                                                                             22
Etat de l’art   C’est quoi?   Pourquoi?   Nouveautés?   Fonctions?   Conclusion




           • Read-only : Si l’application a besoin de lire mais ne modifie
             jamais les instances d'une classe

           • Read-write : Si l'application a besoin de mettre à jour des
             données

           • Nonstrict-read-write : Isolation transactionnelle stricte n'est
Cacheing




             pas nécessaire

           • Transactionnal : ne peut être utilisé que dans un
             environnement JTA




                                                                                               23
24
Etat de l’art   C’est quoi?   Pourquoi?   Nouveautés?   Fonctions?   Conclusion




                 Hibernate3 ajoute la capacité de prédéfinir des
          critères de filtre et d'attacher ces filtres à une classe
          ou à une collection.

          Afin d'utiliser des filtres, ils doivent d'abord être
          définis:
             <filter-def name=" effectiveDate ">
                        <filter-param name=" asOfDate " type="date"/>
             </filter-def>
Filtres




          <class name=" Employeeêtre attaché à une classe :
           Puis, ce filtre peut " ...> ...
             <property name="effectiveStartDate" type="date"
          column="eff_start_dt"/>
             <property name="effectiveEndDate" type="date"
          column="eff_end_dt"/>
             <filter name=" effectiveDate " condition=": asOfDate BETWEEN
                                                         eff_start_dt and eff_end_dt
          "/>
                                                                                     25
          </class>
Etat de l’art   C’est quoi?   Pourquoi?   Nouveautés?   Fonctions?   Conclusion




          • Pas besoin de spécifier le filtre dans
            requêtes

          • Le filtre peut être défini et nommé dans le
            fichier de mapping
Filtres




          • Filtre doit être activée au niveau de la
            session par:
                 session.enableFilter(filtername)


                                                                                            26
Etat de l’art   C’est quoi?   Pourquoi?   Nouveautés?   Fonctions?   Conclusion




                  Il s'agit d'une couche dédiée à la sécurité
           composée de classes Java chargées de vérifier
           l'authentification et les autorisations d'accès aux
           méthodes.
Sécurité




           Ces classes seront automatiquement sollicitées lors
           de l'appel à une méthode protégée

               • Laisser passer la requête ou non en fonction
                 des informations de sécurité qui leur sont
                 fournies et de celles dont elles ont besoin.

                                                                                               27
Etat de l’art   C’est quoi?   Pourquoi?   Nouveautés?   Fonctions?   Conclusion




           • Gérée dans la couche de session.

           • Hibernate3 permet à certaines actions d'être
             approuvées via JACC(rôles et permissions), et
             autorisées via JAAS(authentification).
Sécurité




            Cette fonctionnalité optionnelle est construite au
             dessus de l'architecture d'événements.

           JAAS (Java Authentication and Authorization Services).

           JACC (Java Authorization Contract for Containers) spécification qui permet de
           gérer les décisions de sécurité.

                                                                                              28
Etat de l’art   C’est quoi?   Pourquoi?   Nouveautés?   Fonctions?   Conclusion
                                                      raccourci pour <event
                                                      type="..."><listener
                                                      class="..."/></event>
           D'abord, on doit configurer les listeners d'événements appropriés pour
           permettre l'utilisation d'autorisations JAAS.on a un istener pour un type
                                                      Si
                                                      d'événement particulier.

            <listener type="pre-delete"
            class="org.hibernate.secure.JACCPreDeleteEventListener"/>
            <listener type="pre-update"
            class="org.hibernate.secure.JACCPreUpdateEventListener"/>
            <listener type="pre-insert"
            class="org.hibernate.secure.JACCPreInsertEventListener"/> <listener
Sécurité




            type="pre-load"
            class="org.hibernate.secure.JACCPreLoadEventListener"/>

           Ensuite, toujours dans hibernate.cfg.xml, lier les permissions aux rôles :
           <grant role="admin" entity-name="User" actions="insert,update,read"/>
           <grant role="su" entity-name="User" actions="*"/>



           Les noms de rôle sont les rôles compris par votre fournisseur JAAC.

                                                                                               29
Etat de l’art   C’est quoi?   Pourquoi?   Nouveautés?   Fonctions?   Conclusion
Mapping XML/relationnel
                                  Nouvelles approches de mapping proposées par Hibernate
                          3 consistant à utiliser des classes dynamiques et des documents
                          XML ou à spécifier manuellement des ordres SQL.




                                                                                                               30
Etat de l’art   C’est quoi?   Pourquoi?   Nouveautés?   Fonctions?   Conclusion
Mapping XML/relationnel
                          • Approche par document : requêtes pas
                            exploitables, peu performante!
                          • Approche par élément :




                                       Principe général
                                       • Elément complexe  Table
                                       • Elément simple ou attribut  Colonne
                                                                                                             31
32
Etat de l’art   C’est quoi?   Pourquoi?   Nouveautés?   Fonctions?   Conclusion




          Optimisation du temps de
          développement

          Applications facilement migrables
                (hibernate.cfg.xml)

          Adoption à grande échelle

          Technologie prometteuse(Nhibernate)

                                                                                  33
Merci pour
   votre
 attention


         34
35

Weitere ähnliche Inhalte

Was ist angesagt?

JNDI Java Naming Derectory Interfaces
JNDI Java Naming Derectory InterfacesJNDI Java Naming Derectory Interfaces
JNDI Java Naming Derectory Interfacesbenouini rachid
 
Objet Direct Formation JPA Hibernate
Objet Direct Formation JPA HibernateObjet Direct Formation JPA Hibernate
Objet Direct Formation JPA Hibernateformationobjetdirect
 
Formation JPA Java persistence API
Formation JPA Java persistence APIFormation JPA Java persistence API
Formation JPA Java persistence APIThibault Cuvillier
 
La persistance des données : ORM et hibernate
La persistance des données : ORM et hibernateLa persistance des données : ORM et hibernate
La persistance des données : ORM et hibernateYouness Boukouchi
 
Démystifions le machine learning avec spark par David Martin pour le Salon B...
Démystifions le machine learning avec spark par David Martin pour le Salon B...Démystifions le machine learning avec spark par David Martin pour le Salon B...
Démystifions le machine learning avec spark par David Martin pour le Salon B...Ippon
 
Alt.Net France - Domain Driven Design - 2 Dec 2008
Alt.Net France - Domain Driven Design - 2 Dec 2008Alt.Net France - Domain Driven Design - 2 Dec 2008
Alt.Net France - Domain Driven Design - 2 Dec 2008guest33ece8
 
Introduction au Domain Driven Design
Introduction au Domain Driven DesignIntroduction au Domain Driven Design
Introduction au Domain Driven DesignDNG Consulting
 
CDI mis en pratique avec Seam Social et Weld OSGI
CDI mis en pratique avec Seam Social et Weld OSGICDI mis en pratique avec Seam Social et Weld OSGI
CDI mis en pratique avec Seam Social et Weld OSGIAntoine Sabot-Durand
 
JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java Youness Boukouchi
 
Soutenance Stage Licence
Soutenance Stage LicenceSoutenance Stage Licence
Soutenance Stage LicenceMathias Kluba
 
Mappingobjetrelationnel[1]
Mappingobjetrelationnel[1]Mappingobjetrelationnel[1]
Mappingobjetrelationnel[1]linasafaa
 

Was ist angesagt? (19)

Jpa(1)
Jpa(1)Jpa(1)
Jpa(1)
 
JNDI Java Naming Derectory Interfaces
JNDI Java Naming Derectory InterfacesJNDI Java Naming Derectory Interfaces
JNDI Java Naming Derectory Interfaces
 
Objet Direct Formation JPA Hibernate
Objet Direct Formation JPA HibernateObjet Direct Formation JPA Hibernate
Objet Direct Formation JPA Hibernate
 
Hibernate
HibernateHibernate
Hibernate
 
Introduction à JPA (Java Persistence API )
Introduction à JPA  (Java Persistence API )Introduction à JPA  (Java Persistence API )
Introduction à JPA (Java Persistence API )
 
Formation JPA Java persistence API
Formation JPA Java persistence APIFormation JPA Java persistence API
Formation JPA Java persistence API
 
Crs orm
Crs ormCrs orm
Crs orm
 
La persistance des données : ORM et hibernate
La persistance des données : ORM et hibernateLa persistance des données : ORM et hibernate
La persistance des données : ORM et hibernate
 
Support Java Avancé Troisième Partie
Support Java Avancé Troisième PartieSupport Java Avancé Troisième Partie
Support Java Avancé Troisième Partie
 
Démystifions le machine learning avec spark par David Martin pour le Salon B...
Démystifions le machine learning avec spark par David Martin pour le Salon B...Démystifions le machine learning avec spark par David Martin pour le Salon B...
Démystifions le machine learning avec spark par David Martin pour le Salon B...
 
Alt.Net France - Domain Driven Design - 2 Dec 2008
Alt.Net France - Domain Driven Design - 2 Dec 2008Alt.Net France - Domain Driven Design - 2 Dec 2008
Alt.Net France - Domain Driven Design - 2 Dec 2008
 
Introduction au Domain Driven Design
Introduction au Domain Driven DesignIntroduction au Domain Driven Design
Introduction au Domain Driven Design
 
CDI mis en pratique avec Seam Social et Weld OSGI
CDI mis en pratique avec Seam Social et Weld OSGICDI mis en pratique avec Seam Social et Weld OSGI
CDI mis en pratique avec Seam Social et Weld OSGI
 
Hibernate et jsf
Hibernate et jsfHibernate et jsf
Hibernate et jsf
 
Devoxx 15
Devoxx 15 Devoxx 15
Devoxx 15
 
Presentation JPA
Presentation JPAPresentation JPA
Presentation JPA
 
JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java
 
Soutenance Stage Licence
Soutenance Stage LicenceSoutenance Stage Licence
Soutenance Stage Licence
 
Mappingobjetrelationnel[1]
Mappingobjetrelationnel[1]Mappingobjetrelationnel[1]
Mappingobjetrelationnel[1]
 

Andere mochten auch

Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014Ippon
 
OBJIS Congo présente 10 reperes cle du developpeur java
OBJIS Congo présente 10 reperes cle du developpeur javaOBJIS Congo présente 10 reperes cle du developpeur java
OBJIS Congo présente 10 reperes cle du developpeur javaDouglas MBIANDOU
 
Persistance avec JPA
Persistance avec JPAPersistance avec JPA
Persistance avec JPAsimeon
 
Presentation Spring, Spring MVC
Presentation Spring, Spring MVCPresentation Spring, Spring MVC
Presentation Spring, Spring MVCNathaniel Richand
 
Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...
Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...
Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...Saâd Zerhouni
 
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...
ENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...ENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...Horacio Gonzalez
 
Cómo Superar el Fracaso y Retomar el Camino al Éxito
Cómo Superar el Fracaso y Retomar el Camino al ÉxitoCómo Superar el Fracaso y Retomar el Camino al Éxito
Cómo Superar el Fracaso y Retomar el Camino al Éxitoseremprendedor
 
Pétrarque: " Claires, fraiches et douces eaux "
Pétrarque: " Claires, fraiches et douces eaux "Pétrarque: " Claires, fraiches et douces eaux "
Pétrarque: " Claires, fraiches et douces eaux "10_Elisa_19
 
Présentation1
Présentation1Présentation1
Présentation1lepageya
 
Cuento animado (1)
Cuento animado (1)Cuento animado (1)
Cuento animado (1)Jonathan311
 
Lesson 41
Lesson 41Lesson 41
Lesson 41REXTEC
 

Andere mochten auch (18)

Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014
 
OBJIS Congo présente 10 reperes cle du developpeur java
OBJIS Congo présente 10 reperes cle du developpeur javaOBJIS Congo présente 10 reperes cle du developpeur java
OBJIS Congo présente 10 reperes cle du developpeur java
 
Persistance avec JPA
Persistance avec JPAPersistance avec JPA
Persistance avec JPA
 
Tutoriel J2EE
Tutoriel J2EETutoriel J2EE
Tutoriel J2EE
 
Présentation SOA
Présentation SOAPrésentation SOA
Présentation SOA
 
Presentation Spring, Spring MVC
Presentation Spring, Spring MVCPresentation Spring, Spring MVC
Presentation Spring, Spring MVC
 
Ejb3
Ejb3Ejb3
Ejb3
 
Diapo PFE
Diapo PFEDiapo PFE
Diapo PFE
 
Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...
Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...
Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...
 
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...
ENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...ENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...
 
Cómo Superar el Fracaso y Retomar el Camino al Éxito
Cómo Superar el Fracaso y Retomar el Camino al ÉxitoCómo Superar el Fracaso y Retomar el Camino al Éxito
Cómo Superar el Fracaso y Retomar el Camino al Éxito
 
Desfracmentador de disco
Desfracmentador de  discoDesfracmentador de  disco
Desfracmentador de disco
 
Pétrarque: " Claires, fraiches et douces eaux "
Pétrarque: " Claires, fraiches et douces eaux "Pétrarque: " Claires, fraiches et douces eaux "
Pétrarque: " Claires, fraiches et douces eaux "
 
Présentation1
Présentation1Présentation1
Présentation1
 
Qu'est ce que la cnipi
Qu'est ce que la cnipi  Qu'est ce que la cnipi
Qu'est ce que la cnipi
 
Cuento animado (1)
Cuento animado (1)Cuento animado (1)
Cuento animado (1)
 
DLA Naturals Inc.
DLA Naturals Inc.DLA Naturals Inc.
DLA Naturals Inc.
 
Lesson 41
Lesson 41Lesson 41
Lesson 41
 

Ähnlich wie Hibernate 3

NoSQL User Group Paris - 21 Juin 2011 - GigaSpaces
NoSQL User Group Paris - 21 Juin 2011 - GigaSpacesNoSQL User Group Paris - 21 Juin 2011 - GigaSpaces
NoSQL User Group Paris - 21 Juin 2011 - GigaSpacesFastConnect
 
Morning with MongoDB Paris 2012 - Octo
Morning with MongoDB Paris 2012 - OctoMorning with MongoDB Paris 2012 - Octo
Morning with MongoDB Paris 2012 - OctoMongoDB
 
20091020 JPA2
20091020 JPA220091020 JPA2
20091020 JPA2lyonjug
 
Entity framework core 2 vs micro orm performances
Entity framework core 2 vs micro orm performancesEntity framework core 2 vs micro orm performances
Entity framework core 2 vs micro orm performancesMSDEVMTL
 
Devoxx 2017 : toutes les actualités technologiques à surveiller !
Devoxx 2017 : toutes les actualités technologiques à surveiller !Devoxx 2017 : toutes les actualités technologiques à surveiller !
Devoxx 2017 : toutes les actualités technologiques à surveiller !Société ELOSI
 
Patrons de conception de la programmation fonctionnelle
Patrons de conception de la programmation fonctionnellePatrons de conception de la programmation fonctionnelle
Patrons de conception de la programmation fonctionnelleAssociation Agile Nantes
 
Les micro orm, alternatives à entity framework
Les micro orm, alternatives à entity frameworkLes micro orm, alternatives à entity framework
Les micro orm, alternatives à entity frameworkMSDEVMTL
 
Hibernate vs le Cloud computing
Hibernate vs le Cloud computingHibernate vs le Cloud computing
Hibernate vs le Cloud computingJulien Dubois
 
Hibernate vs le_cloud_computing
Hibernate vs le_cloud_computingHibernate vs le_cloud_computing
Hibernate vs le_cloud_computingNormandy JUG
 
CDI par la pratique
CDI par la pratiqueCDI par la pratique
CDI par la pratiqueIppon
 
Hibernate vs le_cloud_computing
Hibernate vs le_cloud_computingHibernate vs le_cloud_computing
Hibernate vs le_cloud_computingIppon
 
Arquillian - YaJUG - nov. 2012
Arquillian - YaJUG - nov. 2012Arquillian - YaJUG - nov. 2012
Arquillian - YaJUG - nov. 2012Alexis Hassler
 
Presentation JEE et son écossystéme
Presentation JEE et son écossystémePresentation JEE et son écossystéme
Presentation JEE et son écossystémeAlgeria JUG
 
Session GWT Devoxx France 2012 Cobra
Session GWT Devoxx France 2012 CobraSession GWT Devoxx France 2012 Cobra
Session GWT Devoxx France 2012 CobraDNG Consulting
 
Java et les bases de données
Java et les bases de donnéesJava et les bases de données
Java et les bases de donnéesGuillaume Harry
 

Ähnlich wie Hibernate 3 (20)

Javavs net
Javavs netJavavs net
Javavs net
 
NoSQL User Group Paris - 21 Juin 2011 - GigaSpaces
NoSQL User Group Paris - 21 Juin 2011 - GigaSpacesNoSQL User Group Paris - 21 Juin 2011 - GigaSpaces
NoSQL User Group Paris - 21 Juin 2011 - GigaSpaces
 
Morning with MongoDB Paris 2012 - Octo
Morning with MongoDB Paris 2012 - OctoMorning with MongoDB Paris 2012 - Octo
Morning with MongoDB Paris 2012 - Octo
 
Java EE 6 Solutions Linux 2010
Java EE 6 Solutions Linux 2010Java EE 6 Solutions Linux 2010
Java EE 6 Solutions Linux 2010
 
20091020 JPA2
20091020 JPA220091020 JPA2
20091020 JPA2
 
Entity framework core 2 vs micro orm performances
Entity framework core 2 vs micro orm performancesEntity framework core 2 vs micro orm performances
Entity framework core 2 vs micro orm performances
 
Devoxx 2017 : toutes les actualités technologiques à surveiller !
Devoxx 2017 : toutes les actualités technologiques à surveiller !Devoxx 2017 : toutes les actualités technologiques à surveiller !
Devoxx 2017 : toutes les actualités technologiques à surveiller !
 
Patrons de conception de la programmation fonctionnelle
Patrons de conception de la programmation fonctionnellePatrons de conception de la programmation fonctionnelle
Patrons de conception de la programmation fonctionnelle
 
Les micro orm, alternatives à entity framework
Les micro orm, alternatives à entity frameworkLes micro orm, alternatives à entity framework
Les micro orm, alternatives à entity framework
 
Hibernate vs le Cloud computing
Hibernate vs le Cloud computingHibernate vs le Cloud computing
Hibernate vs le Cloud computing
 
Hibernate vs le_cloud_computing
Hibernate vs le_cloud_computingHibernate vs le_cloud_computing
Hibernate vs le_cloud_computing
 
Introduction Kotlin
Introduction KotlinIntroduction Kotlin
Introduction Kotlin
 
Ejb 3
Ejb 3Ejb 3
Ejb 3
 
CDI par la pratique
CDI par la pratiqueCDI par la pratique
CDI par la pratique
 
Hibernate vs le_cloud_computing
Hibernate vs le_cloud_computingHibernate vs le_cloud_computing
Hibernate vs le_cloud_computing
 
JPA est middleware
JPA est middleware JPA est middleware
JPA est middleware
 
Arquillian - YaJUG - nov. 2012
Arquillian - YaJUG - nov. 2012Arquillian - YaJUG - nov. 2012
Arquillian - YaJUG - nov. 2012
 
Presentation JEE et son écossystéme
Presentation JEE et son écossystémePresentation JEE et son écossystéme
Presentation JEE et son écossystéme
 
Session GWT Devoxx France 2012 Cobra
Session GWT Devoxx France 2012 CobraSession GWT Devoxx France 2012 Cobra
Session GWT Devoxx France 2012 Cobra
 
Java et les bases de données
Java et les bases de donnéesJava et les bases de données
Java et les bases de données
 

Mehr von Slimen Belhaj Ali (19)

Solution générique pour la résolution des problèmes statiques de tournées de ...
Solution générique pour la résolution des problèmes statiques de tournées de ...Solution générique pour la résolution des problèmes statiques de tournées de ...
Solution générique pour la résolution des problèmes statiques de tournées de ...
 
BPMN,jBPM,BPEL
BPMN,jBPM,BPELBPMN,jBPM,BPEL
BPMN,jBPM,BPEL
 
Websphere
WebsphereWebsphere
Websphere
 
Sécurisation des services WCF avec WS-Security
Sécurisation des services WCF avec WS-SecuritySécurisation des services WCF avec WS-Security
Sécurisation des services WCF avec WS-Security
 
JasperReport
JasperReportJasperReport
JasperReport
 
ERP Universitaire
ERP UniversitaireERP Universitaire
ERP Universitaire
 
JSF 2.0
JSF 2.0JSF 2.0
JSF 2.0
 
Tutorial
TutorialTutorial
Tutorial
 
Spring security
Spring securitySpring security
Spring security
 
Spring mvc 3.0 web flow
Spring mvc 3.0 web flowSpring mvc 3.0 web flow
Spring mvc 3.0 web flow
 
Share point 2010
Share point 2010Share point 2010
Share point 2010
 
TFS
TFSTFS
TFS
 
objective C
objective Cobjective C
objective C
 
Android
AndroidAndroid
Android
 
WPF MVVM
WPF MVVMWPF MVVM
WPF MVVM
 
Jboss Seam
Jboss SeamJboss Seam
Jboss Seam
 
Google appengine&guice
Google appengine&guiceGoogle appengine&guice
Google appengine&guice
 
Sonar-Hodson-Maven
Sonar-Hodson-MavenSonar-Hodson-Maven
Sonar-Hodson-Maven
 
Administration glassfish 3
Administration glassfish 3Administration glassfish 3
Administration glassfish 3
 

Hibernate 3

  • 1. Ministère de l’Enseignement Supérieur *** * *** Université du 7 novembre à Carthage *** * *** Institut National des Sciences Appliquées et de Technologie Institut National des Sciences Appliquées et de Technologie Hibernate 3 1
  • 2. 1 • Etat de l’art 2 • Hibernate: C’est quoi? 3 • Hibernate : Pourquoi? 4 • Hibernate 3: Nouveautés? 5 • Hibernate 3: Fonctions? 6 • Conslusion 2
  • 3. Etat de l’art C’est quoi? Pourquoi? Nouveautés? Fonctions? Conclusion • Premier service complet de persistance • Gestion de la persistance par conteneur (CMP) ou par le bean (BMP) • Techniquement, ça ne permet pas de gérer les relations entre entités ainsi que les lourdeurs des spécifications d’EJB • Succès EJB2.0 ( interfaces locale, gestion de relations) 3
  • 4. Etat de l’art C’est quoi? Pourquoi? Nouveautés? Fonctions? Conclusion • Fin 1990, ORM propriétaire de WebGain puis Oracle • Puissance relationnelle • Flexibilité • Plus d’efficacités que les beans entités • Une complexité de mise en œuvre 4
  • 5. Etat de l’art C’est quoi? Pourquoi? Nouveautés? Fonctions? Conclusion • 1999, une norme de persistance transparente, libre et unique • Mapping d’objet relationnel • Abstraction de stockage de données • Logique d’interrogation, JDOQL, peu efficace et très complexe • Echec de la première version (spécifications incomplètes) 5
  • 6. Etat de l’art C’est quoi? Pourquoi? Nouveautés? Fonctions? Conclusion Les données importent plus que le code JDBC, ça craint! -Visant le développement du système -Manque de fonctionnalités Persistance Persistance non Lourdeur d’usage transparente transparente Objets ≠ relations (la guerre!) 6
  • 7. Etat de l’art C’est quoi? Pourquoi? Nouveautés? Fonctions? Conclusion 7
  • 8. Etat de l’art C’est quoi? Pourquoi? Nouveautés? Fonctions? Conclusion “An object is sent to hibernation to a RDBMS, when it comes back ( if it does ) it wakes up from his hibernation.” “If an object is sent to a DB it may wait for a Hibernate week, a month, a year, before it gets fetched again hence it was sent to hibernation.” 8
  • 9. Etat de l’art C’est quoi? Pourquoi? Nouveautés? Fonctions? Conclusion Outil mapping objet/relationnel en Java Définition & Historique (ORM) Novembre 2001, Gavin King Octobre 2003, rejoint JBOSS (Red Hat) Standardisé par spécifications JPA/EJB3 Entity Décembre 2005, Hibernate 3.1 Aout 2011, implémentation du standard de persistance EJB 3 9
  • 10. Etat de l’art C’est quoi? Pourquoi? Nouveautés? Fonctions? Conclusion Objet temporaire Objets persistants implémentés sous la forme de POJO Architecture Objet mono-threadé, à durée de vie Obtention des courte, représentant instances session une conversation entre (EntityManagerFactor l'application et l'entrepôt y: JPA): mono- de persistance threadé 10
  • 11. Etat de l’art C’est quoi? Pourquoi? Nouveautés? Fonctions? Conclusion A la différence de hibernate.properties qui ne contient que des paramètres de configuration, le fichier hibernate.cfg.xml peut également spécifier l’emplacement des documents de mapping. • Propriétés relatifs à la Base de Données (url, driver, username, password...) • Les différents déclarations : cache, pool, dialect,... • L’emplacement des fichiers de mapping (beans, cas des annotations) 11
  • 12. Etat de l’art C’est quoi? Pourquoi? Nouveautés? Fonctions? Conclusion 12
  • 13. Etat de l’art C’est quoi? Pourquoi? Nouveautés? Fonctions? Conclusion Remplacement des fichiers XML par des annotations JDK 5.0 implémentant les annotations du standard JPA et les annotations spécifiques à Hibernate @Entity: déclarer une classe comme étant persistante Annotation @Id: Indiquer l’identifiant @GeneratedValue(strategy = GenerationType.AUTO) : définir la stratégie de génération de l’identifiant Annotations concernant les collections @Where : (appliquée à l'entité cible) La stratégie de suppression en cascade avec @OnDelete(action=OnDeleteAction.CASCADE) 13
  • 14. Etat de l’art C’est quoi? Pourquoi? Nouveautés? Fonctions? Conclusion @Cacheable: Entité sera tenu en compte pour le cacheing @Cache(usage=CacheConcurrencyStrategy.READ_ ONLY) : Définir la stratégie du cache Annotation @Embeddable: (pour la classe) Ne pas considérer l’entité comme étant une table à créer (jointure de colomne) @Embedded: (au niveau de l’attribut) @Transient: Enlever l’aspect persistant d’un attribut 14
  • 15. Etat de l’art C’est quoi? Pourquoi? Nouveautés? Fonctions? Conclusion Cycle de vie d’objet 15
  • 16. Etat de l’art C’est quoi? Pourquoi? Nouveautés? Fonctions? Conclusion Trop de temps passé par le développeur pour interagir avec la base de données! A votre avis, quel est le % de temps pour écrire du code afin de gérer l’accès à une BD?  Moins de 20%  Environ 50%  Environ 70%  Presque 90% Rang estimé entre 30-70% Donc 30 à 70% du temps de développement 16
  • 17. Etat de l’art C’est quoi? Pourquoi? Nouveautés? Fonctions? Conclusion Génération du code SQL Utilisation du langage de requêtes : Avantages HQL Persistance transparente Récupération de données optimisée Portabilité du code, changement de base de données 17
  • 18. Etat de l’art C’est quoi? Pourquoi? Nouveautés? Fonctions? Conclusion Inconvénients « NO tool can solve ALL problems », Gavin King Hibernate est une technologie jeune Nécessité d’apprendre à l’utiliser 18
  • 19. Etat de l’art C’est quoi? Pourquoi? Nouveautés? Fonctions? Conclusion • Les API Criteria • La gestion du flush manuel • Mécanismes d’attachement et détachements d’objets • Filtrage dynamique des résultats • Gestion du cache de second niveau • Cascade « delete-orphan » Version 3.2.x d’Hibernate : implémentation du standard de persistance EJB 3.0 et Java Persistence API (JPA) JPA est une spécification/standard à respecter , Hibernate est un Framework 19
  • 20. Etat de l’art C’est quoi? Pourquoi? Nouveautés? Fonctions? Conclusion Fetching Cacheing Filtres Sécurité 20
  • 21. Etat de l’art C’est quoi? Pourquoi? Nouveautés? Fonctions? Conclusion Différer au maximum le chargement des objets impliqués dans une relation d’associations, ou d’une collection. Fetching • Défini par défaut, Hibernate 3. • Son contraire, Eager Loading Un moyen de trouver des objets d'une certaine classe et un certain nombre d'associations avec une réduction de requêtes. 21
  • 22. Etat de l’art C’est quoi? Pourquoi? Nouveautés? Fonctions? Conclusion Cacheing N.B. : Les caches ne sont jamais avertis des modifications faites dans la base de données. 22
  • 23. Etat de l’art C’est quoi? Pourquoi? Nouveautés? Fonctions? Conclusion • Read-only : Si l’application a besoin de lire mais ne modifie jamais les instances d'une classe • Read-write : Si l'application a besoin de mettre à jour des données • Nonstrict-read-write : Isolation transactionnelle stricte n'est Cacheing pas nécessaire • Transactionnal : ne peut être utilisé que dans un environnement JTA 23
  • 24. 24
  • 25. Etat de l’art C’est quoi? Pourquoi? Nouveautés? Fonctions? Conclusion Hibernate3 ajoute la capacité de prédéfinir des critères de filtre et d'attacher ces filtres à une classe ou à une collection. Afin d'utiliser des filtres, ils doivent d'abord être définis: <filter-def name=" effectiveDate "> <filter-param name=" asOfDate " type="date"/> </filter-def> Filtres <class name=" Employeeêtre attaché à une classe : Puis, ce filtre peut " ...> ... <property name="effectiveStartDate" type="date" column="eff_start_dt"/> <property name="effectiveEndDate" type="date" column="eff_end_dt"/> <filter name=" effectiveDate " condition=": asOfDate BETWEEN eff_start_dt and eff_end_dt "/> 25 </class>
  • 26. Etat de l’art C’est quoi? Pourquoi? Nouveautés? Fonctions? Conclusion • Pas besoin de spécifier le filtre dans requêtes • Le filtre peut être défini et nommé dans le fichier de mapping Filtres • Filtre doit être activée au niveau de la session par: session.enableFilter(filtername) 26
  • 27. Etat de l’art C’est quoi? Pourquoi? Nouveautés? Fonctions? Conclusion Il s'agit d'une couche dédiée à la sécurité composée de classes Java chargées de vérifier l'authentification et les autorisations d'accès aux méthodes. Sécurité Ces classes seront automatiquement sollicitées lors de l'appel à une méthode protégée • Laisser passer la requête ou non en fonction des informations de sécurité qui leur sont fournies et de celles dont elles ont besoin. 27
  • 28. Etat de l’art C’est quoi? Pourquoi? Nouveautés? Fonctions? Conclusion • Gérée dans la couche de session. • Hibernate3 permet à certaines actions d'être approuvées via JACC(rôles et permissions), et autorisées via JAAS(authentification). Sécurité  Cette fonctionnalité optionnelle est construite au dessus de l'architecture d'événements. JAAS (Java Authentication and Authorization Services). JACC (Java Authorization Contract for Containers) spécification qui permet de gérer les décisions de sécurité. 28
  • 29. Etat de l’art C’est quoi? Pourquoi? Nouveautés? Fonctions? Conclusion raccourci pour <event type="..."><listener class="..."/></event> D'abord, on doit configurer les listeners d'événements appropriés pour permettre l'utilisation d'autorisations JAAS.on a un istener pour un type Si d'événement particulier. <listener type="pre-delete" class="org.hibernate.secure.JACCPreDeleteEventListener"/> <listener type="pre-update" class="org.hibernate.secure.JACCPreUpdateEventListener"/> <listener type="pre-insert" class="org.hibernate.secure.JACCPreInsertEventListener"/> <listener Sécurité type="pre-load" class="org.hibernate.secure.JACCPreLoadEventListener"/> Ensuite, toujours dans hibernate.cfg.xml, lier les permissions aux rôles : <grant role="admin" entity-name="User" actions="insert,update,read"/> <grant role="su" entity-name="User" actions="*"/> Les noms de rôle sont les rôles compris par votre fournisseur JAAC. 29
  • 30. Etat de l’art C’est quoi? Pourquoi? Nouveautés? Fonctions? Conclusion Mapping XML/relationnel Nouvelles approches de mapping proposées par Hibernate 3 consistant à utiliser des classes dynamiques et des documents XML ou à spécifier manuellement des ordres SQL. 30
  • 31. Etat de l’art C’est quoi? Pourquoi? Nouveautés? Fonctions? Conclusion Mapping XML/relationnel • Approche par document : requêtes pas exploitables, peu performante! • Approche par élément : Principe général • Elément complexe  Table • Elément simple ou attribut  Colonne 31
  • 32. 32
  • 33. Etat de l’art C’est quoi? Pourquoi? Nouveautés? Fonctions? Conclusion Optimisation du temps de développement Applications facilement migrables (hibernate.cfg.xml) Adoption à grande échelle Technologie prometteuse(Nhibernate) 33
  • 34. Merci pour votre attention 34
  • 35. 35