Crs orm
-
Upload
wael-aniba -
Category
Documents
-
view
216 -
download
5
description
Transcript of Crs orm
![Page 1: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/1.jpg)
Developpement Web - Object Relational Mapping and Hibernate
Developpement Web - Object RelationalMapping and Hibernate
Jean-Michel [email protected]
http://www.info.univ-angers.fr/pub/richer
M1/M2 Informatique 2010-2011
1 / 58
![Page 2: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/2.jpg)
Developpement Web - Object Relational Mapping and Hibernate
Plan
Plan
1 Introduction
2 JOBYME
3 Hibernate
4 Bibliographie
2 / 58
![Page 3: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/3.jpg)
Developpement Web - Object Relational Mapping and Hibernate
Plan
ORM et Hibernate
Objectifs
• se familiariser avec l’ORM
• le mettre en oeuvre sans framework (jobyme)
• le mettre en oeuvre en utilisant Hibernate
3 / 58
![Page 4: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/4.jpg)
Developpement Web - Object Relational Mapping and Hibernate
Introduction
Introduction
Introduction
4 / 58
![Page 5: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/5.jpg)
Developpement Web - Object Relational Mapping and Hibernate
Introduction
Que’est-ce que l’ORM ?
ORM
L’ORM ou Object Relational Mapping a pour but d’etablir lacorrespondance entre
• une table de la base de donnees
• et une classe du modele objet
5 / 58
![Page 6: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/6.jpg)
Developpement Web - Object Relational Mapping and Hibernate
Introduction
Pourquoi l’ORM ?
Necessite de l’ORM• le modele logique des donnees est different du modele de
classe• reutilisabilite du code pour effectuer les operation de base :
• DAO• CRUD
6 / 58
![Page 7: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/7.jpg)
Developpement Web - Object Relational Mapping and Hibernate
Introduction
Rappel CRUD
CRUD
ensemble des fonctions a implanter dans un BD relationnelle :
Operation SQLCreate INSERT
Read (Retrieve) SELECTUpdate UPDATE
Delete (Destroy) DELETE
7 / 58
![Page 8: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/8.jpg)
Developpement Web - Object Relational Mapping and Hibernate
Introduction
Pourquoi l’ORM ?
Comparaison Objet et Relationnel
La representation sous forme Relationnelle n’entre pas encorrespondance avec la representation Objet
• Objet : notions d’heritage et de polymorphisme
• Objet : pas d’identifiant (pointeur)
• Objet : les relations n:m sont modelisees par descontainers
8 / 58
![Page 9: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/9.jpg)
Developpement Web - Object Relational Mapping and Hibernate
Introduction
ORM et Java
ORM et Java
Inconvenients lies a Java
• choix important de solutions et outils / API• evolution des API suivant les versions :
• difficulte d’apprentissage• difficulte de configuration
9 / 58
![Page 10: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/10.jpg)
Developpement Web - Object Relational Mapping and Hibernate
Introduction
ORM et Java
ORM, Java et JDBC
la JDBC (Java DataBase Connectivity) a apporte unestandardisation au niveau de l’acces des bases de donnees,mais :
• il faut ecrire le code pour realiser le CRUD
• et realiser le mapping entre tables et objets
10 / 58
![Page 11: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/11.jpg)
Developpement Web - Object Relational Mapping and Hibernate
Introduction
ORM et Java
Solutions existantes• API standard : JDO (Java Data Objects + POJO)
• API : Hibernate + POJO
• API complexes : EJB Entity
Frameworks de persistance : http://fr.wikipedia.org(Hibernate, Cayenne, EJB3, ...
11 / 58
![Page 12: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/12.jpg)
Developpement Web - Object Relational Mapping and Hibernate
Introduction
ORM et Java
Comparaison JDO et Hibernate
• JDO est un standard et Hibernate une solution OpenSource
• JDO peut traiter la persistance des BD Objets ou XML(possible depuis Hibernate 3)
• JDO propose un langage de requete JDOQL / HSQL
• JDO modifie les POJO alors que ce n’est pas le casd’Hibernate
12 / 58
![Page 13: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/13.jpg)
Developpement Web - Object Relational Mapping and Hibernate
Introduction
ORM et Java
JDO• www.oracle.com
• http://db.apache.org/jdo/index.html
Hibernate• http://www.hibernate.org/
13 / 58
![Page 14: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/14.jpg)
Developpement Web - Object Relational Mapping and Hibernate
JOBYME
JOBYME
JOBYME
14 / 58
![Page 15: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/15.jpg)
Developpement Web - Object Relational Mapping and Hibernate
JOBYME
JOBYME
Definition JOBYME• Java Orm BY ME
• tentative de generation automatique de l’ORM (Code Java+ CRUD)
• lecture de la BD (MySQL) et generation du codecorrespondant
15 / 58
![Page 16: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/16.jpg)
Developpement Web - Object Relational Mapping and Hibernate
JOBYME
Etude de cas
Etude de cas
On desire modeliser la relation : Client, Commande, Produit(Customer, Command, Product).
16 / 58
![Page 17: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/17.jpg)
Developpement Web - Object Relational Mapping and Hibernate
JOBYME
Conventions de nommage
Conventions de nommage des entites
• tout en minuscule, separation par caractere souligne ( )
• table : meme nom que l’entite (customer)
• attributs : prefixes par les 2 premiers caracteres de latable et caractere souligne (cu )
• toujours un identifiant (cu id)
• minimiser la longueur des champs
• faire en sorte que leurs noms soient explicites
17 / 58
![Page 18: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/18.jpg)
Developpement Web - Object Relational Mapping and Hibernate
JOBYME
Cas de la table commande
Cas de la table commande
champ role type indexco id identifiant integer PK
co date date creation date NXco total price prix total float
co cu id identifiant client integer NX
18 / 58
![Page 19: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/19.jpg)
Developpement Web - Object Relational Mapping and Hibernate
JOBYME
Conventions de nommage
Conventions de nommage des relations n/m
• par ordre alphabetique du nom des entites / tables
• nom : 4 premieres lettres de la premiere table, 4 premiereslettres
• prefixe : premieres lettres des entites
19 / 58
![Page 20: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/20.jpg)
Developpement Web - Object Relational Mapping and Hibernate
JOBYME
Cas de la relation commande / produit
Relation commande / produit : commprod
champ role type indexcp id identifiant integer PK
cp co id identifiant commande integer NXco pr id identifiant produit integer NXcp qty quantite integer
20 / 58
![Page 21: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/21.jpg)
Developpement Web - Object Relational Mapping and Hibernate
JOBYME
JOBYME
Installation de la base de donnees
Mettre en place la base de donnees commands.sql sousMySQL :
• nom de la base : commands
• identifiant de connexion : commuser
• mot de passe : commpass
21 / 58
![Page 22: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/22.jpg)
Developpement Web - Object Relational Mapping and Hibernate
JOBYME
Mapping Objet / Relationnel
Mise en correspondance objet / tuple
realisee au travers d’un fichier de description des tablesnomme mapping.xml place a la racine du projet. On decrit lenom de la table et le nom de la classe associee :
• table : nom de la table
• class : nom de la classe
• prefix : prefixe du nom de table
22 / 58
![Page 23: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/23.jpg)
Developpement Web - Object Relational Mapping and Hibernate
JOBYME
Mapping Objet / Relationnel
Mise en correspondance relation / attribut
on decrit ensuite les relations :
• type : type de relation (one-to-one, one-to-many)
• attribute : nom de l’attribut
• class : nom de la classe associee
• crud : liste des operations a effectuer(create,retrieve*,update,delete)
(*) en cascade
23 / 58
![Page 24: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/24.jpg)
Developpement Web - Object Relational Mapping and Hibernate
JOBYME
DTD du Mapping
DTD Mapping Objet / Relationnel1 <?xml version="1.0" encoding="utf-8" ?>2 <!ELEMENT mappings (mapping+) >
3 <!ELEMENT mapping (relation*) >
4 <!ATTLIST mapping table CDATA #REQUIRED >
5 <!ATTLIST mapping class CDATA #REQUIRED >
6 <!ATTLIST mapping prefix CDATA #REQUIRED >
7 <!ELEMENT relation EMPTY >
8 <!ATTLIST relation type CDATA #REQUIRED >
9 <!ATTLIST relation attribute CDATA #REQUIRED >
10 <!ATTLIST relation class CDATA #REQUIRED >
11 <!ATTLIST relation crud CDATA #REQUIRED >
12
24 / 58
![Page 25: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/25.jpg)
Developpement Web - Object Relational Mapping and Hibernate
JOBYME
Exemple
Customer, Command, Product
25 / 58
![Page 26: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/26.jpg)
Developpement Web - Object Relational Mapping and Hibernate
JOBYME
Mapping
Mapping Objet / Relationnel1 <?xml version="1.0" encoding="UTF-8"?>2 <!DOCTYPE mappings SYSTEM "mappings.dtd">3 <mappings >
4 <mapping table="command" class="Command" prefix="co">5 <relation type="one-to-one" attribute="customer" class="Customer"'6 crud="retrieve" />7 <relation type="one-to-many" attribute="commprods" class="Commprod"'8 crud="create,retrieve*,update,delete" />9 </mapping >
1011 <mapping table="customer" class="Customer" prefix="cu">12 <relation type="one-to-many" attribute="commands" class="Command"'13 crud="retrieve" />14 </mapping >
1516 <mapping table="commprod" class="Commprod" prefix="cp">17 <relation type="one-to-one" attribute="product" class="Product"'18 crud="retrieve" />19 </mapping >
2021 <mapping table="product" class="Product" prefix="pr" />22 </mappings >
23
26 / 58
![Page 27: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/27.jpg)
Developpement Web - Object Relational Mapping and Hibernate
JOBYME
Modele objet genere
La classe Command1 public class Command extends PersistentObject2 implements PersistentInterface {34 protected int id;5 protected String date;6 protected int cuId;7 protected float totalPrice;8 protected int nbCmdlines;9 // relational fields
10 protected Customer customer;11 protected List <Commprod> commprods;12 }
27 / 58
![Page 28: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/28.jpg)
Developpement Web - Object Relational Mapping and Hibernate
JOBYME
Modele objet genere
La classe Customer1 public class Customer extends PersistentObject2 implements PersistentInterface {34 protected int id;5 protected String firstName;6 protected String lastName;7 protected String email;8 protected String password;9 protected int rights;
10 // relational fields11 protected List <Command> commands;12 }
28 / 58
![Page 29: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/29.jpg)
Developpement Web - Object Relational Mapping and Hibernate
JOBYME
Persistance
Mise en place de la persistance
29 / 58
![Page 30: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/30.jpg)
Developpement Web - Object Relational Mapping and Hibernate
JOBYME
Persistance
Mise en place de la persistance
30 / 58
![Page 31: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/31.jpg)
Developpement Web - Object Relational Mapping and Hibernate
JOBYME
Utilisation de JOBYME
Utiliser JOBYME
dans le repertoire du projet lancer : ant
• compile le generateur
• genere les classes a partir du fichier de mapping
• lance un test sommaire
31 / 58
![Page 32: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/32.jpg)
Developpement Web - Object Relational Mapping and Hibernate
Hibernate
Hibernate
Hibernate
32 / 58
![Page 33: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/33.jpg)
Developpement Web - Object Relational Mapping and Hibernate
Hibernate
Hibernate
Hibernate• framework ORM pour Java (BD Relationnelles et Objet)
• requetes pour CRUD (HQL Hibernate Query Language)
• utilisation des POJOs (Plain Old Java Objects)
• configuration au travers de fichiers XML ou d’annotations
• tres fortement configurable
• tres difficile a maıtriser !
33 / 58
![Page 34: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/34.jpg)
Developpement Web - Object Relational Mapping and Hibernate
Hibernate
Historique
Hibernate• 2001 par Gavin King, alternative a EJB2
• 2003 version 2 qui devient un standard incontournable
• integration JBOSS (RedHat)
• 2010 version 3 : annotations
34 / 58
![Page 35: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/35.jpg)
Developpement Web - Object Relational Mapping and Hibernate
Hibernate
Mapping Hibernate
Utilisation des mappings
• par convention l’extension est .hbm.xml
• on definit un fichier par classe / table
• placer le fichier de mapping dans le meme repertoire quele fichier de classe
35 / 58
![Page 36: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/36.jpg)
Developpement Web - Object Relational Mapping and Hibernate
Hibernate
Mapping Hibernate
fichier Mapping NomClasse.hbm.xml
• permet de faire le lien entre les champs de la table et ceuxde la classe
• doit etre declare dans le repertoire de la classe
example Product
Product.hbm.xml declare dans com.mysite.model
36 / 58
![Page 37: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/37.jpg)
Developpement Web - Object Relational Mapping and Hibernate
Hibernate
Mapping Hibernate
Modele de declaration1 <?xml version="1.0" encoding="utf-8"?>2 <!DOCTYPE hibernate-mapping3 PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"4 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">5 <hibernate-mapping package="com.commands.model">67 <class name="Product" table="product">8 <id name="id" type="integer" column="pr id">9 <generator class="native"/>
10 </id>11 <property name="label" column="pr label"/>12 <property name="stock" type="int" column="pr stock"/>13 <property name="price" type="float" column="pr price"/>14 </class >
1516 </hibernate-mapping >
17
37 / 58
![Page 38: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/38.jpg)
Developpement Web - Object Relational Mapping and Hibernate
Hibernate
Mapping Hibernate
Structure du mapping1 <hibernate-mapping package="PackageName">2 <class3 name="ClassName"4 table="tableName"5 lazy="true|false"6 polymorphism="implicit|explicit"7 where="arbitrary sql where condition"8 rowid="rowid"9 subselect="SQL expression"
10 ...11 >
12 ...13 </hibernate-mapping >
38 / 58
![Page 39: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/39.jpg)
Developpement Web - Object Relational Mapping and Hibernate
Hibernate
Mapping Hibernate
Structure du Mapping
• PackageName : nom du package ou se trouve la classe
• ClassName : nom de la classe Java
• tableName : nom de la table de la base de donnees
• autres parametres a definir selon la base de donnees etl’environnement
39 / 58
![Page 40: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/40.jpg)
Developpement Web - Object Relational Mapping and Hibernate
Hibernate
Mapping Hibernate
Definition des champs de la table
• id : permet de definir l’identifiant de la table
• property : champ simple
• composite-id : cle composee
• timestamp : champ de type date/heure
40 / 58
![Page 41: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/41.jpg)
Developpement Web - Object Relational Mapping and Hibernate
Hibernate
Mapping Hibernate
Structure d’un identifiant1 <id2 name="propertyName"3 type="typename"4 column="column name"5 unsaved-value="null|any|none|undefined|id value"6 access="field|property|ClassName">7 node="element-name|@attribute-name|element/@attribute|."89 <generator class="generatorClass"/>
10 </id>11
41 / 58
![Page 42: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/42.jpg)
Developpement Web - Object Relational Mapping and Hibernate
Hibernate
Mapping Hibernate
Definition d’un identifiant• name : nom du champ de la classe
• type : integer, long, float, string, character, timestamp,binary, ...
• column : nom du champ dans la table
• generator : methode de generation de l’identifiant
42 / 58
![Page 43: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/43.jpg)
Developpement Web - Object Relational Mapping and Hibernate
Hibernate
Mapping Hibernate
Methode de generation d’un identifiant
• assigned : l’utilisateur est responsable de la generation
• native : la base de donnees est responsable de lageneration
43 / 58
![Page 44: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/44.jpg)
Developpement Web - Object Relational Mapping and Hibernate
Hibernate
Mapping Hibernate
Structure d’une propriete1 <property2 name="propertyName"3 column="column name"4 type="typename"5 update="true|false"6 insert="true|false"7 formula="arbitrary SQL expression"8 access="field|property|ClassName"9 lazy="true|false"
10 unique="true|false"11 not-null="true|false"12 index="index name"13 unique key="unique key id"14 length="L"15 precision="P"16 scale="S"17 />
44 / 58
![Page 45: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/45.jpg)
Developpement Web - Object Relational Mapping and Hibernate
Hibernate
Mapping Hibernate
Definition d’une propriete
• name , type , column• update , insert : indique que le champ doit etre ajoute lors
d’une modification ou insertion (defaut a vrai)
• formula : expression SQL qui permet de definir le champ
• lazy : acces aux objets associes
45 / 58
![Page 46: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/46.jpg)
Developpement Web - Object Relational Mapping and Hibernate
Hibernate
Strategies de chargement
Fetching
• concerne le chargement des objets lies par des relations
• probleme complexe pour assurer l’efficacite
Exemple : chargement d’un client
Faut-il charger toutes les commandes lors du chargement duclient ?
46 / 58
![Page 47: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/47.jpg)
Developpement Web - Object Relational Mapping and Hibernate
Hibernate
Strategies de chargement
Fetching strategies
Hibernate definit 4 strategies de chargement
• Immediate
• Lazy : ne charge pas tout
• Eager : on specifie quels objets doivent etre charges
• Batch
47 / 58
![Page 48: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/48.jpg)
Developpement Web - Object Relational Mapping and Hibernate
Hibernate
Utiliser Hibernate
Utilisation de Hibernate• definir un fichier de configuration
• demarrer Hibernate requiert la creation d’uneSessionFactory
48 / 58
![Page 49: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/49.jpg)
Developpement Web - Object Relational Mapping and Hibernate
Hibernate
Fichier de configuration
Fichier de configuration hibernate.cfg.xml
• definit les parametres d’acces a la base de donnees
• definit ou trouver les fichiers de mapping (ressource)
• doit etre place dans le repertoire src du projet
49 / 58
![Page 50: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/50.jpg)
Developpement Web - Object Relational Mapping and Hibernate
Hibernate
Configuration d’Hibernate
Fichier de configuration hibernate.cfg.xml1 <hibernate-configuration >
2 <session-factory >
3 <!-- Database connection settings -->4 <property name="connection.driver class">com.mysql.jdbc.Driver<'5 /property>6 <property name="connection.url">jdbc:mysql://localhost:3306/commands<'7 /property>8 <property name="connection.username">commuser</property >
9 <property name="connection.password">commpass</property >
10 <!-- JDBC connection pool (use the built-in) -->11 <property name="connection.pool size">1</property >
12 <!-- SQL dialect -->13 <property name="dialect">org.hibernate.dialect.MySQLDialect</property >
14 <!-- Enable Hibernate’s automatic session context management -->15 <property name="current session context class">thread</property >
16 <!-- Disable the second-level cache -->17 <property name="cache.provider class">org.hibernate.cache.'18 NoCacheProvider</property >
19 <!-- Echo all executed SQL to stdout -->20 <property name="show sql">true</property >
21 <mapping resource="com/mysite/model/command.hbm.xml"/>22 </session-factory >
23 </hibernate-configuration >
2425
50 / 58
![Page 51: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/51.jpg)
Developpement Web - Object Relational Mapping and Hibernate
Hibernate
SessionFactory
classe HibernateUtil
• obtenir une instance de SessionFactory
• realise l’initialisation de la connexion
51 / 58
![Page 52: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/52.jpg)
Developpement Web - Object Relational Mapping and Hibernate
Hibernate
HibernateUtil
HibernateUtil.java1 import org.hibernate.SessionFactory;2 import org.hibernate.cfg.Configuration ;3 import static java.lang.System .err;45 public class HibernateUtil {6 private static final SessionFactory sessionFactory;7 static {8 try {9 // Create the SessionFactory from hibernate.cfg.xml
10 sessionFactory = new Configuration ().configure().buildSessionFactory()'11 ;12 } catch (Exception ex) {13 // Make sure you log the exception, as it might be swallowed14 err.println("Initial SessionFactory creation failed." + ex.getMessage('15 ));16 throw new ExceptionInInitializerError (ex.getMessage());17 }18 }1920 public static SessionFactory getSessionFactory() {21 return sessionFactory;22 }23 }
52 / 58
![Page 53: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/53.jpg)
Developpement Web - Object Relational Mapping and Hibernate
Hibernate
Librairies .jar
Librairies Hibernate
Mettre dans le repertoire WEB-INF/lib ou lib :
• l’ensemble des fichiers de Hibernate lib/required
• ajouter egalement slf4j-simplehttp://www.slf4j.org/
53 / 58
![Page 54: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/54.jpg)
Developpement Web - Object Relational Mapping and Hibernate
Hibernate
HibernateUtil
Application
Mettre en place la configuration JAVA pour realiser un test avecHibernate
54 / 58
![Page 55: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/55.jpg)
Developpement Web - Object Relational Mapping and Hibernate
Hibernate
Hibernate et annotations
Annotations
Hibernate integre un mecanisme d’annotation qui permet deremplacer les fichiers de mapping par des commentaires dansle code. L’objectif est de
• ne pas separer le code Java du fichier de mapping
• de maniere a configurer Hibernate automatiquement
55 / 58
![Page 56: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/56.jpg)
Developpement Web - Object Relational Mapping and Hibernate
Hibernate
Exemple d’annotations
Annotations1 import org.hibernate.annotations.Index;2 @Entity3 @Table(name="ARTIST")4 @NamedQueries({5 @NamesQuery(name="com.oreilly.hh.artistByName",6 query="from Artist as artist where upper(artist.name)=upper(:name)")7 })8 public class Artist {9 @Id
10 @Column(name="ARTIST ID")11 @GeneratedValue(strategy=GenerationType.AUTO)12 private Integer id;1314 @Column(name="NAME",nullable=false,unique=true)15 @Index(name="ARTIST NAME",columnNames={"NAME"})16 private String name;1718 @ManyToMany19 @JoinTable(name="TRACK ARTISTS",20 joinColumns={@JoinColumn(name="TRACK ID")},21 inverseJoinColumns={@JoinColumn(name="ARTIST ID")})22 private Set <Track> tracks;2324 }
56 / 58
![Page 57: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/57.jpg)
Developpement Web - Object Relational Mapping and Hibernate
Bibliographie
Bibliographie
Bibliographie
57 / 58
![Page 58: Crs orm](https://reader034.fdocuments.in/reader034/viewer/2022051610/5492a7b0ac7959042e8b469a/html5/thumbnails/58.jpg)
Developpement Web - Object Relational Mapping and Hibernate
Bibliographie
Bibliographie, sitographie
• Hibernate Quickly, Patrick Peak, Nick Heudecker,Manning , 2006
• Hibernate in Action, Christian Bauer, Gavin King,Manning , 2005
• Harnessing Hibernate, James Elliot, Tim O’Brien, RyanFowler, O’Reilly , 2008
• www.hibernate.org
58 / 58