Hibernate 3

35
Hibernate 3 1 Institut National des Sciences Appliquées et de Technologie Ministère de l’Enseignement Supérieur *** * *** Université du 7 novembre à Carthage *** * *** Institut National des Sciences Appliquées et de Technologie

description

 

Transcript of Hibernate 3

Page 1: Hibernate 3

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

Page 2: Hibernate 3

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

Page 3: Hibernate 3

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)

Page 4: Hibernate 3

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

Page 5: Hibernate 3

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)

Page 6: Hibernate 3

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

Page 7: Hibernate 3

7

Etat de l’art C’est quoi? Pourquoi? Nouveauté

s? Fonctions? Conclusion

Page 8: Hibernate 3

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

Page 9: Hibernate 3

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

Page 10: Hibernate 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

Page 11: Hibernate 3

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

Page 12: Hibernate 3

12

Architecture du noyau Hibernate:

Etat de l’art C’est quoi? Pourquoi? Nouveauté

s? Fonctions? Conclusion

Page 13: Hibernate 3

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

Page 14: Hibernate 3

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

Page 15: Hibernate 3

15Cycle

de v

ie d

’ob

jet

Etat de l’art C’est quoi? Pourquoi? Nouveauté

s? Fonctions? Conclusion

Page 16: Hibernate 3

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

Page 17: Hibernate 3

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

Page 18: Hibernate 3

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

Page 19: Hibernate 3

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

Page 20: Hibernate 3

20

Etat de l’art C’est quoi? Pourquoi? Nouveauté

s? Fonctions? Conclusion

Fetching

Cacheing

Filtres Sécurité

Page 21: Hibernate 3

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

Page 22: Hibernate 3

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

Page 23: Hibernate 3

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

Page 24: Hibernate 3

24

Page 25: Hibernate 3

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

Page 26: Hibernate 3

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

Page 27: Hibernate 3

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

Page 28: Hibernate 3

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

Page 29: Hibernate 3

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.

Page 30: Hibernate 3

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

Page 31: Hibernate 3

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

Page 32: Hibernate 3

32

Page 33: Hibernate 3

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)

Page 34: Hibernate 3

34

Merci pour votre

attention

Page 35: Hibernate 3

35