Your SlideShare is downloading. ×
Hibernate 3
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Hibernate 3

870
views

Published on

Published in: Technology

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
870
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
80
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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. 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. 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 aHibernate 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 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. 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. 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. 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 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. 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. Etat de l’art C’est quoi? Pourquoi? Nouveautés? Fonctions? ConclusionCycle de vie d’objet 15
  • 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. 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? ConclusionInconvé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 depersistance EJB 3.0 et Java Persistence API (JPA)JPA est une spécification/standard à respecter , Hibernate estun 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 dune certaine classe et un certain nombre dassociations avec une réduction de requêtes. 21
  • 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. 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
  • 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. 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. 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. 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. 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. 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. 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
  • 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

×