Hibernate 3

1,383 views

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,383
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
95
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Hibernate 3

  1. 1. Ministère de l’Enseignement Supérieur *** * *** Université du 7 novembre à Carthage *** * ***Institut National des SciencesAppliquées et de Technologie Institut National des Sciences Appliquées et de Technologie Hibernate 3 1
  2. 2. 1 • Etat de l’art2 • Hibernate: C’est quoi?3 • Hibernate : Pourquoi?4 • Hibernate 3: Nouveautés?5 • Hibernate 3: Fonctions?6 • Conslusion 2
  3. 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. 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. 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. 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. 7. Etat de l’art C’est quoi? Pourquoi? Nouveautés? Fonctions? Conclusion 7
  8. 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 aHibernate week, a month, a year, before it gets fetched again hence it was sent to hibernation.” 8
  9. 9. Etat de l’art C’est quoi? Pourquoi? Nouveautés? Fonctions? Conclusion Outil mapping objet/relationnel en JavaDé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. 10. Etat de l’art C’est quoi? Pourquoi? Nouveautés? Fonctions? Conclusion Objet temporaire Objets persistants implémentés sous la forme de POJOArchitecture Objet mono-threadé, à durée de vie Obtention des courte, représentant instances session une conversation entre(EntityManagerFactor lapplication et lentrepôt y: JPA): mono- de persistance threadé 10
  11. 11. Etat de l’art C’est quoi? Pourquoi? Nouveautés? Fonctions? Conclusion A la différence de hibernate.properties qui necontient que des paramètres de configuration, le fichierhibernate.cfg.xml peut également spécifierl’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. 12. Etat de l’art C’est quoi? Pourquoi? Nouveautés? Fonctions? Conclusion 12
  13. 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 persistanteAnnotation @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 à lentité cible) La stratégie de suppression en cascade avec @OnDelete(action=OnDeleteAction.CASCADE) 13
  14. 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 cacheAnnotation @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. 15. Etat de l’art C’est quoi? Pourquoi? Nouveautés? Fonctions? ConclusionCycle de vie d’objet 15
  16. 16. Etat de l’art C’est quoi? Pourquoi? Nouveautés? Fonctions? Conclusion Trop de temps passé parle développeur pour interagir avec la base dedonné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. 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. 18. Etat de l’art C’est quoi? Pourquoi? Nouveautés? Fonctions? ConclusionInconvénients « NO tool can solve ALL problems », Gavin King Hibernate est une technologie jeune Nécessité d’apprendre à l’utiliser 18
  19. 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 depersistance EJB 3.0 et Java Persistence API (JPA)JPA est une spécification/standard à respecter , Hibernate estun Framework 19
  20. 20. Etat de l’art C’est quoi? Pourquoi? Nouveautés? Fonctions? Conclusion Fetching Cacheing Filtres Sécurité 20
  21. 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 dune certaine classe et un certain nombre dassociations avec une réduction de requêtes. 21
  22. 22. Etat de l’art C’est quoi? Pourquoi? Nouveautés? Fonctions? ConclusionCacheing N.B. : Les caches ne sont jamais avertis des modifications faites dans la base de données. 22
  23. 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 dune classe • Read-write : Si lapplication a besoin de mettre à jour des données • Nonstrict-read-write : Isolation transactionnelle stricte nestCacheing pas nécessaire • Transactionnal : ne peut être utilisé que dans un environnement JTA 23
  24. 24. 24
  25. 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 dattacher ces filtres à une classe ou à une collection. Afin dutiliser des filtres, ils doivent dabord ê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. 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 mappingFiltres • Filtre doit être activée au niveau de la session par: session.enableFilter(filtername) 26
  27. 27. Etat de l’art C’est quoi? Pourquoi? Nouveautés? Fonctions? Conclusion Il sagit dune couche dédiée à la sécurité composée de classes Java chargées de vérifier lauthentification et les autorisations daccès aux méthodes.Sécurité Ces classes seront automatiquement sollicitées lors de lappel à 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. 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 larchitecture 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. 29. Etat de l’art C’est quoi? Pourquoi? Nouveautés? Fonctions? Conclusion raccourci pour <event type="..."><listener class="..."/></event> Dabord, on doit configurer les listeners dévénements appropriés pour permettre lutilisation dautorisations 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"/> <listenerSé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. 30. Etat de l’art C’est quoi? Pourquoi? Nouveautés? Fonctions? ConclusionMapping 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. 31. Etat de l’art C’est quoi? Pourquoi? Nouveautés? Fonctions? ConclusionMapping 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. 32
  33. 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. 34. Merci pour votre attention 34
  35. 35. 35

×