0% ont trouvé ce document utile (0 vote)
34 vues4 pages

TP1 - Hibernate

Transféré par

bamekki abderrahmane
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
34 vues4 pages

TP1 - Hibernate

Transféré par

bamekki abderrahmane
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Master : SDIA

Matière : Ingénierie de Développement des Logiciels

Objectif :

L’objectif de ce TP est de commencer à vous familiariser avec Hibernate.

Rappel :

Operations CRUD : Create/Insert, Retrieve, Update, Delete

Create/Insert :
// Crée une instance de Configuration pour configurer Hibernate
Configuration cfg = new Configuration();

// Construit une SessionFactory en utilisant les configurations Hibernate


SessionFactory sessionFactory =
[Link]().buildSessionFactory();

// Ouvre une nouvelle session à partir de la SessionFactory


Session session = [Link]();

// Récupère une transaction à partir de la session


Transaction t = [Link]();

[Link](); // Démarre la transaction

// Crée un nouvel objet Student avec un ID, un nom, et une note


Student s = new Student(101, "Mohamed", 10);

// Sauvegarde l'objet Student dans la base de données


[Link](s);

// Valide la transaction, ce qui enregistre effectivement les changements


dans la base de données
[Link]();

// Ferme la SessionFactory pour libérer les ressources


[Link]();

Retrieving data from database:

get() : est utilisé pour récupérer un objet lorsqu'il n'est pas sûr que l'objet existe ou non.
load() : est utilisé pour récupérer un objet s'il est sûr que cet objet existe.

Student s=[Link]([Link], 101);


[Link]("Id : "+[Link]());
[Link]("Name : "+[Link]());
[Link]("Class : "+[Link]());

L’exécution de l’une de ces deux méthodes sur le même objet et dans la même transaction plusieurs
fois aura comme résultat l’exécution d’une seule requête SQL. Ce mécanisme est utilisé par Hibernate
pour améliorer ses performances en évitant plusieurs accès à la base de données. Ce mécanisme est
appelé Cache niveau 1.

Update :

1
Student s=[Link]([Link], 101);
[Link]("Amina");
[Link](s);

Delete :
Student s=[Link]([Link], 101);
[Link](s);
[Link]();

Le langage de requête Hibernate Criteria (HCQL) est utilisé pour récupérer les enregistrements en
fonction de critères spécifiques. L'interface Criteria fournit des méthodes pour appliquer des critères
tels que la récupération de tous les enregistrements de table dont le salaire est supérieur à 50 000
etc.

Exemple pour récupérer tous les enregistrements :


Criteria c = [Link]([Link]);
List<Employe> list = [Link]();
for(int i= 0; i<[Link]();i++){
Student s = [Link](i);
[Link]([Link]());
}
Exemple de HCQL pour récupérer les enregistrements dont le salaire est supérieur à 10000

Criteria c=[Link]([Link]);
[Link]([Link]("salaire",10000));
List list=[Link]();

Les autres fonctions sont les suivantes :


Fonction Signification
lt less than
le less than or equal
gt greater than
ge greater than or equal
ne not equal
eq equal
between
like % est disponible de la même façon que SQL
asc ascending order
desc descending order

Exemple de HCQL pour obtenir les enregistrements par ordre croissant en fonction du salaire :

Crietria c=[Link]([Link]);
[Link]([Link]("salaier"));
List list=[Link]();

Exercice 1 :
Soit une base de données qui contient la table suivante :
Etudiant (numE, nom, prenom ville, moyenne)
En utilisant l’API criteria, répondez aux questions suivantes :
1- Afficher la liste de tous les étudiants
2- Afficher la liste des étudiants qui ont une moyenne supérieure ou égale à 10.

2
3- Afficher la liste des étudiants qui ont une moyenne entre 5 et 10.
4- Afficher la liste des étudiants dont le champ ville égale à Annaba.
5- Afficher la liste des étudiant dont le prénom est « Amine » et la moyenne est supérieure à 14
triés de la plus grande moyenne à la plus petite.
6- Afficher la liste des étudiants dont le nom contient la chaine de caractères « ah » est la ville
égale à Constantine.

Exercice 2 :
Soit une base de données qui contient les tables suivantes :
Student (numE, nom, prenom, ville)
Notes (numN, moyenne, numE*)
En utilisant HQL répondez aux questions suivantes :

1- Afficher la liste de tous les étudiants (nom et prénom).


2- Afficher tous les étudiants dont la ville est « Skikda ».
3- Afficher la liste des étudiants qui ont une moyenne supérieure à 10.
4- Afficher la moyenne des moyennes de tous les étudiants.
5- Afficher le nombre des étudiants ayant une moyenne supérieure ou égale à 10.
6- Afficher la moyenne des moyennes des étudiants par ville.
7- Modifier les moyennes des étudiants à 10 uniquement pour les étudiants qui ont une
moyenne égale à 9,99.

Rappel : Hibernate Query language (HQL)

Requête de base :
from Classe as objet

WHERE [Link]= valeur

« Att » pour attribut de la classe

Jointure :
Select objet1

from Classe1 as objet1, Classe2 as objet2

WHERE objet1.Att1 = objet2.objet3.Att2

Sachant que objet1 et objet3 appartiennent à la même classe

Agrégation :

select fonction([Link])

from Classe as objet

ou

select [Link], fonction([Link])

from Classe as objet

group by

3
Les fonctions disponibles sont : count(*) , count(distinct x), avg(), max(), min() et sum().
Pour récupérer les résultats :
1- Le résultat est une seule valeur (le premier élément de la liste):
Query q = [Link]("REQUETE HQL");
List<NomClasse> list =[Link]();
2- Le résultat est un tableau d’objets, chaque élément contient deux valeurs : att +
fonction([Link]) :
Query q = [Link]("REQUETE HQL");
List<Object[]> listResult = [Link]();
for (int i=0; i<[Link]();i++) {
[Link]( [Link](i)[0] + "-"+
[Link](i)[1]); }

Vous aimerez peut-être aussi