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)