Upload
slimen-belhaj-ali
View
772
Download
2
Embed Size (px)
DESCRIPTION
Citation preview
1
Hibernate 3
Institut National des Sciences Appliquées et
de Technologie
Ministère de l’Enseignement Supérieur *** * ***
Université du 7 novembre à Carthage*** * ***
Institut National des SciencesAppliquées et de Technologie
2
Plan
1• Etat de l’art
2• Hibernate: C’est quoi?
3• Hibernate : Pourquoi?
4
• Hibernate 3: Nouveautés?
5
• Hibernate 3: Fonctions?
6• Conslusion
3
Etat de l’art C’est quoi? Pourquoi? Nouveauté
s? Fonctions? Conclusion
Les EJB (Etreprise JavaBeans) une spécification décevante:
• 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)
4
Etat de l’art C’est quoi? Pourquoi? Nouveauté
s? Fonctions? Conclusion
TopLink :
• 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
5
Etat de l’art C’est quoi? Pourquoi? Nouveauté
s? Fonctions? Conclusion
Java Data Object (JDO):
• 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)
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
Lourdeur d’usage
Objets ≠ relations (la guerre!)
Persistance non
transparente
Persistance transparent
e
7
Etat de l’art C’est quoi? Pourquoi? Nouveauté
s? Fonctions? Conclusion
8
Hibernate
“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 week, a month, a year, before it gets fetched again hence it was sent to hibernation.”
Etat de l’art C’est quoi? Pourquoi? Nouveauté
s? Fonctions? Conclusion
9
Etat de l’art C’est quoi? Pourquoi? Nouveauté
s? Fonctions? ConclusionD
éfi
nit
ion
& H
isto
riq
ue
Outil mapping objet/relationnel en Java (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
10
Arc
hit
ectu
reEtat de l’art C’est
quoi? Pourquoi? Nouveautés? Fonctions? Conclusion
Objet mono-threadé, à durée de vie
courte, représentant une conversation
entre l'application et l'entrepôt de persistance
Obtention des instances session
(EntityManagerFactory: JPA): mono-
threadé
Objets persistants implémentés sous la
forme de POJO
Objet temporaire
11
Fichier de configuration Hibernate
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)
Etat de l’art C’est quoi? Pourquoi? Nouveauté
s? Fonctions? Conclusion
12
Architecture du noyau Hibernate:
Etat de l’art C’est quoi? Pourquoi? Nouveauté
s? Fonctions? Conclusion
13
An
nota
tion
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
@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)
Etat de l’art C’est quoi? Pourquoi? Nouveauté
s? Fonctions? Conclusion
14
An
nota
tion
@Cacheable: Entité sera tenu en compte pour le cacheing@Cache(usage=CacheConcurrencyStrategy.READ_ONLY) : Définir la stratégie du cache
@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
Etat de l’art C’est quoi? Pourquoi? Nouveauté
s? Fonctions? Conclusion
15Cycle
de v
ie d
’ob
jet
Etat de l’art C’est quoi? Pourquoi? Nouveauté
s? Fonctions? Conclusion
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
17
Avan
tag
es
Génération du code SQL
Utilisation du langage de requêtes : HQL
Persistance transparente
Récupération de données optimisée
Portabilité du code, changement de base de données
Etat de l’art C’est quoi? Pourquoi? Nouveauté
s? Fonctions? Conclusion
18
Incon
vén
ien
ts « NO tool can solve ALL problems », Gavin King
Hibernate est une technologie jeune
Nécessité d’apprendre à l’utiliser
Etat de l’art C’est quoi? Pourquoi? Nouveauté
s? Fonctions? Conclusion
19
Etat de l’art C’est quoi? Pourquoi? Nouveauté
s? Fonctions? Conclusion
Version 3.2.x d’Hibernate : implémentation du standard de persistance EJB 3.0 et Java Persistence API (JPA)
• 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 »
Plus, par rapport à JPA:
JPA est une spécification/standard à respecter , Hibernate est un Framework
20
Etat de l’art C’est quoi? Pourquoi? Nouveauté
s? Fonctions? Conclusion
Fetching
Cacheing
Filtres Sécurité
21
Fetc
hin
g
Pattern LazyLoading (retard au chargement ) :
Différer au maximum le chargement des objets impliqués dans une relation d’associations, ou d’une collection.
•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.
Etat de l’art C’est quoi? Pourquoi? Nouveauté
s? Fonctions? Conclusion
You Get It Only When
You Use It
22
Cach
ein
g
N.B. : Les caches ne sont jamais avertis des modifications faites dans la base de données.
Etat de l’art C’est quoi? Pourquoi? Nouveauté
s? Fonctions? Conclusion
23
Les stratégies de cache :
• 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 pas nécessaire
• Transactionnal : ne peut être utilisé que dans un environnement JTA
Cach
ein
gEtat de l’art C’est
quoi? Pourquoi? Nouveautés? Fonctions? Conclusion
24
25
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:
Puis, ce filtre peut être attaché à une classe :
<filter-def name=" effectiveDate "> <filter-param name=" asOfDate " type="date"/>
</filter-def>
<class name=" Employee " ...> ... <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 "/> </class>
Filtr
es
Etat de l’art C’est quoi? Pourquoi? Nouveautés? Fonctions? Conclusion
26
Filtr
es
• Pas besoin de spécifier le filtre dansrequêtes
• Le filtre peut être défini et nommé dans le fichier de mapping
• Filtre doit être activée au niveau de la session par:
session.enableFilter(filtername)
Etat de l’art C’est quoi? Pourquoi? Nouveautés? Fonctions? Conclusion
27
Security Interceptors :
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.
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.
Sécu
rité
Etat de l’art C’est quoi? Pourquoi? Nouveautés? Fonctions? Conclusion
28
Sécu
rité
• 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).
Cette fonctionnalité optionnelle est construite au dessus de l'architecture d'événements.
Sécurité déclarative d'Hibernate
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é.
Etat de l’art C’est quoi? Pourquoi? Nouveautés? Fonctions? Conclusion
29
Sécu
rité
D'abord, on doit configurer les listeners d'événements appropriés pour permettre l'utilisation d'autorisations JAAS.
Ensuite, toujours dans hibernate.cfg.xml, lier les permissions aux rôles :
Les noms de rôle sont les rôles compris par votre fournisseur JAAC.
<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 type="pre-load" class="org.hibernate.secure.JACCPreLoadEventListener"/>
<grant role="admin" entity-name="User" actions="insert,update,read"/> <grant role="su" entity-name="User" actions="*"/>
Etat de l’art C’est quoi? Pourquoi? Nouveautés? Fonctions? Conclusion
raccourci pour <event type="..."><listener class="..."/></event> Si on a un istener pour un type d'événement particulier.
30Map
pin
g X
ML/r
ela
tion
nel
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.
Etat de l’art C’est quoi? Pourquoi? Nouveautés? Fonctions? Conclusion
31
• 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
Map
pin
g X
ML/r
ela
tion
nel
Etat de l’art C’est quoi? Pourquoi? Nouveautés? Fonctions? Conclusion
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)
34
Merci pour votre
attention
35