Hibernate 3

Preview:

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

Recommended