La couche JPA de notre programme est désormais constituée d une entité JPA et du fichier de configuration d Hibernate. Le but est maintenant de compléter notre projet pour pouvoir générer la base de données et tester l enregistrement d un premier objet. Le projet aura donc cette arborescence : Test de la couche Hibernate Testons maintenant notre couche Hibernate à l aide de la classe de test InitDB : import java.util.gregoriancalendar; import org.hibernate.session; import org.hibernate.transaction; import fr.mistra.pgejpav1.jpa.event;
public class InitDB { public static void main(string[] args) { // Récupération d'une session Hibernate Session s = HibernateUtils.getSession(); // Début de la transaction Transaction t = s.begintransaction(); // Création d'un objet Event Event e = new Event(); e.settitle("titre de l'event 1"); e.setdescription("description de l'évènement 1"); e.setbegindate(new GregorianCalendar()); e.setallday(false); // Enregistrement de l'event s.save(e); // Fin de la transaction
t.commit(); // Fermeture de la session Hibernate s.close(); } } Cette classe a pour but de créer le schéma de la base de données et d y insérer l Event que l on vient de créer. Pour ce faire, on suit les étapes suivantes. Ouverture d une session Hibernate (ligne 11) à l aide de la SessionFactory gérée dans la classe HibernateUtils : c'est cet objet qui permet de créer un pont entre l'application Java et Hibernate. Création d une transaction (ligne 14) : chaque accès à la base de données en écriture doit se faire à l'intérieur d'une transaction. L'appel à la méthode commit(), au moment de la fermeture de la transaction, permet de synchroniser la base de données et d'y effectuer les modifications nécessaires. Création de l'objet Event à enregistrer (lignes 17 à 21). Enregistrement de l'objet à l'aide de la méthode save (ligne 24), qu'hibernate transformera en une opération SQL insert. Fermeture de la transaction (ligne 27) et synchronisation du programme Java avec la base de données. Fermeture de la session (ligne 30) : l'opération de sauvegarde est terminée, le lien avec Hibernate peut être fermé. L exécution affiche en console tous les logs générés par Hibernate et se terminent avec les lignes suivantes : 2389 [main] INFO org.hibernate.tool.hbm2ddl.schemaexport - Running hbm2ddl schema export
2390 [main] INFO org.hibernate.tool.hbm2ddl.schemaexport - exporting generated schema to database 2413 [main] INFO org.hibernate.tool.hbm2ddl.schemaexport - schema export complete Hibernate: /* insert fr.mistra.pgejpav1.jpa.event */ insert into pge_jpa_v1_events_01 (events_allday, events_begindate, events_description, events_title) values (?,?,?,?) Après les logs d initialisation d Hibernate (lignes 1 à 3), un autre log, dont le commentaire (ligne 8) précise le sujet, trace l insertion dans la base de données d une entrée Event. Vérifions avec PhpMyAdmin la structure et le contenu de la table créée par notre application :
Powered by TCPDF (www.tcpdf.org) Génération de la base de données Pour rappel, les opérations SQL sont affichées en console, commentées et formatées grâce aux lignes que nous avions insérées dans le fichier de configuration Hibernate : <property name="show_sql">true</property> <property name="hibernate.format_sql">true</property> <property name="use_sql_comments">true</property>