Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Djemal Ahmed
Architecture d'une application Java en
couches
Une application java est souvent découpée en couches. Considérons une
architecture courante, celle à trois couches :
2 Hibernate java
Couche accès aux données
Couche d’accès
Couche Couche Base de
utilisateur Couche Métier aux données
Interface (DAO) JDBC données
1 2 3
3 Hibernate java
Couche HIBERNATE
De multiples efforts ont été faits pour isoler la couche [dao] des aspects propriétaires des
SGBD Une solution qui a eu un vrai succès dans ce domaine ces dernières années est
SGBD. Une solution qui a eu un vrai succès dans ce domaine ces dernières années, est
celle d'Hibernate
Couche
C h d’
d’accès
è Objets
Obj t image
i Couche Couche BD
aux données de la BD
(DAO) Hibernate JDBC
La couche [Hibernate] vient se placer entre la couche [dao] écrite par le développeur et
la couche [Jdbc]
Le développeur ne voit plus la couche [Jdbc] ni les tables de la BD. Il ne voit que l'image
objet de BD, fournie par la couche [Hibernate]. Le pont entre les tables de la BD et les
objets manipulés par la couche [dao] est fait par des fichiers de configuration de type
j p p p g yp
XML
4 Hibernate java
Hibernate
Hibernate est un projet open source visant à proposer un
outilil de
d mapping
i entre lles objets
bj et des d données
d é stockées
ké
dans une base de données relationnelle. Ce projet ne
repose sur aucun standard mais il est très populaire
notamment à cause de ses bonnes performances et de
son ouverture avec de nombreuses bases de données.
Les bases de données supportées sont les principales du
marché : Oracle, MySQL, PostgreSQL, Sybase, SQLServer,
S DB,
Sap DB DB2,Interbase,
DB2 I b ...
Le site officiel http://www.hibernate.org contient
beaucoup d d'informations
informations sur l'outil
l outil et propose de le
télécharger ainsi que sa documentation.
5 Hibernate java
Architecture Hibernate
6 Hibernate java
Principe de fonctionnement à l’aide d’un
Exemple
Nous allons utiliser Hibernate avec une base de données de type
MySQL possédant une table nommée "personnes"
personnes .
8 Hibernate java
hibernate annotation cfg xml
hibernate-annotation.cfg.xml
<hibernate-configuration>
<
<session-factory>
i f t >
<!-- Database connection properties - Driver, URL, user, password -->
<property
p p y name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
yqj p p y
<property name="hibernate.connection.url">jdbc:mysql://localhost/TestDB</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password"></property>
" "
<mapping class="com.journaldev.hibernate.model.Employee1"/>
</session-factory>
/session factory
</hibernate-configuration>
9 Hibernate java
Maven Dependencies
<dependency>
<groupId>junit</groupId>
groupId junit /groupId
<artifactId>junit</artifactId>
<version>3.8.1</version>
scope test /scope
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<groupId>org hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.3.5.Final</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
if Id l j / if Id
<version>5.1.6</version>
</dependency>
10 Hibernate java
Utilisation d
d'Hibernate
Hibernate
Une instance de la classe Session est obtenu à partir
d'
d'une fabrique
f b de
d type SessionFactory.
S F
Cet objet est obtenu à partir de l'instance du type
C fi
Configuration
i en utilisant
ili lla méthode
éh d
buildSessionFactory().
L méthode
La é h d openSession()
S i () de d la
l classe
l
SessionFactory permet d'obtenir une instance de la
classe Session.
Session
Par défaut, la méthode openSession() qui va ouvrir
une connexion vers la base de données en utilisant
les informations fournies par les propriétés de
configuration.
11 Hibernate java
Méthode de travail : Hibernate
Le fichier “HibernateUtil.java” permet de créer le “session
factory “ . Il faut créer une nouvelle classe
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
ppublic class HibernateUtil {
private static final SessionFactory sessionFactory;
static {
try { //Create the SessionFactory
sessionFactory
F = new Configuration().configure("hibernate.cfg.xml").buildSessionFactor
C f () f ("h b f l") b ldS F
y();
} catch (Throwable ex) { // Log the Exception
y p (
System.err.println("SessionFactory y creation failed!!!" + ex);
);
throw new ExceptionInInitializerError(ex);
} }
public static SessionFactory getSessionFactory() {
return sessionFactory;
} }
12 Hibernate java
La persistance d'une
d une nouvelle occurrence
Pour créer une nouvelle occurrence dans la source de données, il
suffit de :
créer une nouvelle instance de classe encapsulant les données,
de valoriser ces propriétés
p p
et d'appeler la méthode save() de la session en lui passant en
paramètre l'objet encapsulant les données.
13 Hibernate java
import net.sf.hibernate.*;
import
p net.sf.hibernate.cfg.Configuration;
g g
import java.util.Date;
public class TestHibernate1 {
public static void main(String args[]) throws Exception {
Configuration
g config
g = new Configuration();
g ()
config.addClass(Personnes.class);
SessionFactory sessionFactory = config.buildSessionFactory();
Session session = sessionFactory.openSession();
Transaction tx = null;
try {
tx = session.beginTransaction();
Personnes personne = new Personnes("nom3", "prenom3", new Date());
session.save(personne);
session.flush() ;
tx.commit();
} catch (Exception e) {
if (tx != null) {
tx.rollback();
}
throw e;
} finally {
session.close();
}
sessionFactory.close();
}
}
14 Hibernate java
Le langage de requête HQL
Pour offrir un langage d'interrogation commun à toutes les
base de données,
données Hibernate propose son propre langage
nommé HQL (Hibernate Query Language)
15 Hibernate java
La méthode createQuery()
méthode createQuery() de la classe Session permet
d'effectuer une recherche d'occurrences grâce à la
requête fournie en paramètre.
Si la requête nécessite des paramètres, ces derniers
son signalés
g par
p ?
Il seront passés grâce à méthode setType appliquée à
ll’objet
objet de type Query résultant de ll’appel
appel de la
méthode createQuery()
LL’exécution
exécution de la requête se fait via la méthode list()
appelé sr l’objet de type Query
16 Hibernate java
Exemple : rechercher toutes les occurrences
d'une
d une table
import net.sf.hibernate.*;
import net.sf.hibernate.cfg.Configuration;
net sf hibernate cfg Configuration;
import java.util.*;
public class TestHibernate3 {
public static void main(String args[]) throws Exception {
Configuration config = new Configuration();
config.addClass(Personnes.class);
SessionFactory sessionFactory = config.buildSessionFactory();
Session session = sessionFactory.openSession();
try {
Query req = session.createQuery(" from Personnes ");
List personnes = req.list();
for (int i = 0; i < personnes.size(); i++) {
Personnes personne = (Personnes) personnes.get(i);
System.out.println("nom = " + personne.getNomPersonne());
} } finally { session.close(); }sessionFactory.close();
}} 17 Hibernate java
La mise à jour d
d'une
une occurrence
Pour mettre à jour une occurrence dans la source de
d
données,
é il suffit
ffi d'appeler
d' l lla méthode
é h d update()
d () ded la
l
session en lui passant en paramètre l'objet encapsulant les
données.
données
18 Hibernate java
La suppression d'une ou plusieurs
occurrences
La méthode delete() de la classe Session permet de
supprimer une occurrence passée en paramètre.
Pour supprimer une occurrence encapsulée dans une
classe, il suffit d'invoquer la classe en lui passant en
paramètre l'instance de la classe.
19 Hibernate java
Les relations
Un des fondements du modèle de données relationnelles repose sur
les relations qui peuvent intervenir entre une table et une ou
plusieurs autres tables ou la table elle même.
20 Hibernate java