2. Sommaire
Introduction
Prérequis
Diagramme de classes
La classe JAVA : Personne.java
Schéma relationnel
Structure minimale du fichier *.hbm.xml
Choisir le typage
Remplir la fiche préparatrice
La clé primaire
Catalogue des déclarations
DATETIME vs TIMESTAMP
La déclaration XML : Personne.hbm.xml
Conclusion
2 www.proflibre.com
4. Prérequis
Ayant consulté les deux formations précédentes
dans la même série :
https://www.proflibre.com/?serie=55
[Hibernate] Vue d’ensemble
https://www.proflibre.com/JAVA_:_HIBERNATE/
[Hibernate]_Vue_d%E2%80%99ensemble/1
Hibernate Native : configurer
https://www.proflibre.com/JAVA_:_HIBERNATE/
Hibernate_Native_:_configurer/2
4 www.proflibre.com
8. Structure minimale
du fichier *.hbm.xml
8 www.proflibre.com
<hibernate-mapping package="com.proflibre.xml">
<class name="Personne" table="PERSONNE"> Nom de la table dans la BD
<id name="id" column="personne_id">
<generator class="iden>ty"/> Clé primaire
</id> propriété JAVA et nom du champ dans la BD
<property name="nom" type="org.hibernate.type.StringType"
length="500" /> propriété JAVA Type Hibernate
… Autres
<property name="dateInser>on" type=">mestamp">
<column name="date_inser>on" sql-type="TIMESTAMP" />
</property>
</class>
</hibernate-mapping> Nom du champ dans la BD Type du champ dans la BD
Package JAVA
Nom de la classe JAVA
AUTO_INCREMENT
Taille du
champ
dans la
BD
11. Remplir la fiche
préparatrice
11 www.proflibre.com
Propriétés
JAVA/Hibernate
Types JAVA Types
Hibernate
Champs MySQL Types MySQL
id Long long personne_id bigint
nom String org.hibernate.t
ype.StringType
nom varchar
prenom String java.lang.String prenom varchar
biographie String text biographie longtext
age int int age int
poids Double double poids double
compte BigDecimal big_decimal compte decimal
dateMariage Date date dateMariage date
dateInser<on Timestamp ?mestamp date_inser<on ?mestamp
12. La clé primaire
12 www.proflibre.com
Plusieurs valeurs sont possibles pour l’a?ribut class de la balise generator :
Ø iden?ty : l'iden<fiant renvoyé est de type long, short ou int, c’est l’équivalent d’une
clé primaire AUTO_INCREMENT pour MySQL.
Ø na?ve : choisit iden<ty, sequence ou hilo selon les possibilités offertes par la base
de données sous-jacente, c’est l’équivalent d’une clé primaire AUTO_INCREMENT
pour MySQL.
Ø Increment : ne pas u<liser en environnement clusterisé. Ce n’est pas l’équivalent
d’une clé primaire AUTO_INCREMENT pour MySQL, l’incrémenta<on est gérée ici
par Hibernate et non par le SGBD.
Ø assigned : laisse l'applica<on affecter un iden<fiant à l'objet avant que la méthode
save() soit appelée. Il s'agit de la stratégie par défaut si aucun <generator> n'est
spécifié.
Ø Sequence : u<lisa<on des séquences dans DB2, PostgreSQL, Oracle, SAP DB, McKoi
ou d'un générateur dans Interbase. L'iden<fiant renvoyé est de type long, short ou
int. Les séquences sont très u<lisées sur Oracle.
Ø …
14. DATETIME vs TIMESTAMP ?
14 www.proflibre.com
Les types DATETIME et TIMESTAMP sont tous les deux u<lisés pour les
valeurs qui con<ennent des par<es de date et d'heure. MySQL les récupère
et les affiche au format 'YYYY-MM-DD hh:mm:ss' format.
DATETIME est définie dans l’inervalle '1000-01-01 00:00:00’ à '9999-12-31
23:59:59'.
TIMESTAMP est définie dans l’inervalle '1970-01-01 00:00:01' UTC à
'2038-01-19 03:14:07' UTC.
MySQL conver<t les valeurs TIMESTAMP du fuseau horaire actuel en UTC
pour le stockage, et de retour de l'UTC vers le fuseau horaire actuel pour la
récupéra<on. (Cela ne se produit pas pour d'autres types tels que
DATETIME.) Par défaut, le fuseau horaire actuel pour chaque connexion est
l'heure du serveur.
Source : h?ps://dev.mysql.com/doc/refman/8.0/en/date<me.html
15. DATETIME vs TIMESTAMP ?
15 www.proflibre.com
Ø Créer un champ de type MySQL TIMESTAMP avec Hibernate :
Ø Créer un champ de type MySQL DATETIME avec Hibernate :
16. La déclaration XML
« Personne.hbm.xml »
16 www.proflibre.com
Nombre total de chiffres
Nombre de chiffres après la virgule
Nom du champ dans la base
Nom de la propriété dans la classe JAVA
17. Conclusion
Dans l’étape suivante, nous allons découvrir
comment créer la même entité vue dans
cette formation avec les annotations.
17 www.proflibre.com
18. www.proflibre.com 18
Merci de votre attention.
Vous pouvez poser des questions ou laisser des
remarques dans la zone des commentaires sur la
page de cette formation. D’autres formations qui
pourront vous intéresser sont publiées sur
ProfLibre.com régulièrement.
Vous pouvez aussi passer le Quizz sur la même
page pour tester vos connaissances. Et n’oubliez
pas de vous abonner à notre chaîne Youtube et
partager avec vos collègues.
A très bientôt !
L’équipe ProfLibre.com