Modèle et persistance des données

Transcription

Modèle et persistance des données
Modèle et persistance des données
Le projet étant créé et les librairies nécessaires ayant été ajoutées, nous pouvons implémenter
le modèle de données et la couche de persistance.
Arborescence du projet
Dans cette première étape de développement, nous allons créer trois packages :
fr.mistra.pgejee.model, qui contiendra l'entité JPA User,
fr.mistra.pgejee.utils, qui contiendra la classe HibernateUtils détaillée plus loin dans ce
chapitre,
fr.mistra.pgejee.tests, qui contiendra une classe Main temporaire, utilisée pour tester
la persistance implémentée dans ce chapitre.
Un fichier hibernate.cfg.xml est également ajouté à la racine du répertoire /src.
L'arborescence du projet est donc la suivante :
Mistra Formation - 19 rue Béranger 75003 Paris - Métro République - 01 82 52 25 25 - [email protected]
Modèle et persistance des données
La classe User
Nous l'avons vu, notre modèle de données est composé d'une unique classe User, que nous
mapperons dans une table users.
Pour obtenir des explications supplémentaires sur le mapping relationnel-objet et les
annotations JPA, reportez-vous au chapitre Création d'une entité JPA du tutoriel Hibernate.
package fr.mistra.pgejee.model;
Mistra Formation - 19 rue Béranger 75003 Paris - Métro République - 01 82 52 25 25 - [email protected]
Modèle et persistance des données
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="users")
public class User {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="id")
private Long id;
@Column(name="identifiant")
private String login;
@Column(name="motdepasse")
Mistra Formation - 19 rue Béranger 75003 Paris - Métro République - 01 82 52 25 25 - [email protected]
Modèle et persistance des données
private String pass;
private String email;
public User(String login, String pass, String email) {
super();
this.login = login;
this.pass = pass;
this.email = email;
}
public User() {
}
// Getters et setters
}
Le fichier de configuration hibernate.cfg.xml
Le fichier hibernate.cfg.xml, situé dans le répertoire /src contient le code suivant :
Mistra Formation - 19 rue Béranger 75003 Paris - Métro République - 01 82 52 25 25 - [email protected]
Modèle et persistance des données
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
org.hibernate.dialect.MySQLDialect
com.mysql.jdbc.Driver
jdbc:mysql://localhost/pgejeeV1
root
create-drop
Mistra Formation - 19 rue Béranger 75003 Paris - Métro République - 01 82 52 25 25 - [email protected]
Modèle et persistance des données
Des explications supplémentaires sont disponibles dans le chapitre Configuration d'Hibernate
du tutoriel Hibernate.
La classe HibernateUtils
Enfin, la classe HibernateUtils permet de gérer les sessions Hibernate et de remplir la base de
données au lancement du programme pour effectuer les tests. Pour une meilleure
compréhension de cette classe, nous vous invitons à consulter le chapitre correspondant du
tutoriel Hibernate : Contexte de persistance et sessions.
package fr.mistra.pgejee.utils;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.AnnotationConfiguration;
import fr.mistra.pgejee.model.User;
public class HibernateUtils {
private static SessionFactory sessionFactory;
Mistra Formation - 19 rue Béranger 75003 Paris - Métro République - 01 82 52 25 25 - [email protected]
Modèle et persistance des données
static {
try {
// Create the SessionFactory from hibernate.cfg.xml
sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
populateDatabase();
} catch (Throwable ex) {
// Make sure you log the exception, as it might be swallowed
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static Session getSession() {
return sessionFactory.openSession();
}
// Remplissage de la base de données en début d'application
private static void populateDatabase(){
Mistra Formation - 19 rue Béranger 75003 Paris - Métro République - 01 82 52 25 25 - [email protected]
Modèle et persistance des données
User u = new User("mistra","formation");
User u2= new User("login", "pass");
Session s = getSession();
Transaction t = s.beginTransaction();
s.save(u);
s.save(u2);
t.commit();
s.close();
}
}
Classe Main et test de l'application
Le test de l'application consiste simplement en l'ouverture et la fermeture d'une session
Hibernate. De cette manière, la classe HibernateUtils est instanciée et la méthode
populateDatabase() sera appelée, insérant deux entrées User dans la base de données.
package fr.mistra.pgejee.tests;
import org.hibernate.Session;
import fr.mistra.pgejee.utils.HibernateUtils;
Mistra Formation - 19 rue Béranger 75003 Paris - Métro République - 01 82 52 25 25 - [email protected]
Modèle et persistance des données
public class Main {
public static void main(String[] args) {
testPersistence();
}
// Test de la persistance des données
private static void testPersistence() {
Session s = HibernateUtils.getSession();
s.close();
}
}
Pour lancer le test, il faut exécuter le programme en tant qu'application Java et non l'exécuter
sur le serveur Tomcat. Pour ce faire, placez-vous sur le fichier Main.java, faites un clic droit et
choisissez la ligne Run As / Java Application comme illustré ci-dessous :
Mistra Formation - 19 rue Béranger 75003 Paris - Métro République - 01 82 52 25 25 - [email protected]
Modèle et persistance des données
Mistra Formation - 19 rue Béranger 75003 Paris - Métro République - 01 82 52 25 25 - [email protected]
Modèle et persistance des données
Le programme s'exécute alors en tant qu'application Java et la console affiche les logs
d'initialisation d'Hibernate. Afin de vérifier le bon déroulement du test et l'insertion dans la base
de données des trois utilisateurs que nous avons créés, ouvrons PhpMyAdmin founi par
WampServer à l'url http://localhost/phpmyadmin :
Le modèle et la couche de persistance sont donc désormais implémentés et fonctionnels.
Voyons maintenant comment réaliser la couche d'accès aux données.
Mistra Formation - 19 rue Béranger 75003 Paris - Métro République - 01 82 52 25 25 - [email protected]
Modèle et persistance des données
.
Mistra Formation - 19 rue Béranger 75003 Paris - Métro République - 01 82 52 25 25 - [email protected]
Powered by TCPDF (www.tcpdf.org)