Académique Documents
Professionnel Documents
Culture Documents
2014 - 2015
1
Introduction
Nous allons, cependant, nous intéresser à une couche plus basse d'une architecture
applicative, la couche d'accès aux données.
Celle-ci permet d'interfacer le code métier avec une source de données. L'intérêt est
de pouvoir changer
de base de données en n'ayant besoin de ne modifier que la couche d'accès.
2
Introduction
Travailler dans les deux univers que sont l'orienté objet et la base
de données relationnelle peut être lourd et consommateur en temps
dans le monde de l'entreprise d'aujourd'hui.
SGBD
Logique SQL
métier
Logique
métier
Transparence de la persistance
4
Introduction
Hibernate:
5
Objectif
• Il est le plus utile dans les modèles métier orientés objets dont la
logique métier est implémentée dans la couche Java dite
intermédiaire.
6
Architecture
7
Architecture
8
Architecture
9
Définitions
SessionFactory (org.hibernate.SessionFactory)
Un cache threadsafe (immuable) des mappings vers une (et une seule) base de données. Une
factory (fabrique) de Session et un client de ConnectionProvider. Peut contenir un cache
optionnel de données (de second niveau) qui est réutilisable entre les différentes transactions
Session (org.hibernate.Session)
Un objet mono-threadé, à durée de vie courte, qui représente une conversation entre
l'application et l'entrepôt de persistance. Encapsule une connexion JDBC. Factory (fabrique)
des objets Transaction. Contient un cache (de premier niveau) des objets persistants, ce cache
est obligatoire. Il est utilisé lors de la navigation dans le graphe d'objets ou lors de la
récupération d'objets par leur identifiant.
10
Définitions
Transaction (org.hibernate.Transaction)
(Optionnel) Un objet mono-threadé à vie courte utilisé par l'application pour définir une
unité de travail atomique. Abstrait l'application des transactions sous-jacentes qu'elles soient
JDBC, JTA ou CORBA. Une Session peut fournir plusieurs Transactions dans certains cas.
ConnectionProvider
(org.hibernate.connection.ConnectionProvider)
(Optionnel) Le fabriquant des connexions JDBC. Abstrait l'application de la Datasource ou
du DriverManager sous-jacent. Non exposé à l'application, mais peut être étendu/implémenté
par le développeur.
11
Définitions
TransactionFactory (org.hibernate.TransactionFactory)
(Optionnel) Le fabriquant d'instances de Transaction. Non exposé à l'application, mais peut être
étendu/implémenté par le développeur.
Interfaces d'extension
Hibernate fournit de nombreuses interfaces d'extensions optionnelles que vous pouvez
implémenter pour personnaliser le comportement de votre couche de persistance.
12
Etats des instances
Une instance d'une classe persistante peut être dans l'un des trois états suivants, définis
par rapport à un contexte de persistance. L'objet Session d'hibernate correspond à ce
concept de contexte de persistance :
• passager (transient)
L'instance n'est pas et n'a jamais été associée à un contexte de persistance. Elle ne possède
pas d'identité persistante (valeur de clé primaire)
• persistant
L'instance est associée au contexte de persistance. Elle possède une identité persistante
(valeur de clé primaire) et, peut-être, un enregistrement correspondant dans la base. Pour
un contexte de persistance particulier, Hibernate garantit que l'identité persistante est
équivalente à l'identité Java (emplacement mémoire de l'objet)
• détaché
L'instance a été associée au contexte de persistance mais ce contexte a été fermé, ou
l'instance a été sérialisée vers un autre processus. Elle possède une identité persistante et
peut-être un enregistrement correspondant dans la base. Pour des instances détachées,
Hibernate ne donne aucune garantie sur la relation entre l'identité persistante et l'identité
Java. 13
Intégration JMX
JMX est le standard J2EE de gestion des composants Java. Hibernate peut être géré
via un service JMX standard.
Si vous déployez Hibernate via JMX sur JBoss AS, vous aurez également les bénéfices
suivants :
15
Configurer Hibernate
Par programme
Par un fichier de propriétés hibernate.properties
Par un document xml hibernate.cfg.xml
16
(1) Configurer par programme
Une instance de
org.hibernate.cfg.Configuration
représente un ensemble de mappings des
classes Java d'une application vers la base de
données SQL.
Configuration cfg = new Configuration()
.addResource("Item.hbm.xml")
.addResource("Bid.hbm.xml");
17
(1) Configurer par programme
18
(1) Configurer par programme
20
(3) Exemple de document
hibernate.cfg.xml
21
(3) hibernate.cfg.xml
(1) connection à la base
<property name="connection.driver_class">
org.hsqldb.jdbcDriver
</property>
<property name="connection.url">
jdbc:hsqldb:film
</property>
<property name="connection.username">sa</property>
<property name="connection.password"></property>
22
hibernate.cfg.xml
(2) autres propriétés