[Java] Utiliser hibernate sans Jsp, Partie 1 : Multi-insertion (Français).

Java_logo

Introduction


Toujours à la recherche des solutions les plus rapides pour mes futures Apps, je suis maintenant avec le back-end Hibernate.

Hibernate permet de créer automatiquement les tables SQL, à partir du code JAVA.

C’est bien plus rapide. il fait le mapping Objet(Java)/Relationnel automatiquement.

Outre le fait d’être incroyablement rapide, il est également plus aisé de collaborer sur des projets de ce type.

Par comparaison, j’ai tapé le back end PHP de mon exo 60 à la main. , même si c’est rapide, cela ne l’est pas autant que Hibernate.

Mon code est copié de http://www.simplecodestuffs.com/auto-generate-primary-key-in-hibernate/ de   (Excellent!)

Par contre, c’est plus difficile à utiliser avec les JSP, et je voudrais aussi pouvoir l’utiliser avec AngularJs(Donc faudra utiliser la lib Gson en plus… c’est un peu lourd).

Egalement, attention, parce que dès que l’on aborde les jointures entre tables,cela devient plus compliqué !

Prérequis


    • Eclipse
    • Tomcat
    • Mysql
    • Créer un ‘new Dynamic Project’ appelé HibernateX
    • Télécharger la version 4.3 de Hibernate (Incompatible avec la v5 et la v4.2)
    • télécharger Mysql connector.

 

 Ajout des librairies


  • Clic droit sur le projet HibernateX, properties/Java build Path/ Add external Jar puis ajouter tous les fichiers présents dans le répertoire Required de la librairie Hibernate
  • Télécharger mysql Connector
  • Clic droit sur le projet HibernateX, properties/Java build Path/ Add external Jar puis ajouter mysql-connector.jar
  • hibernatex2

Voici à quoi va ressembler mon arborescence dans Eclipse, à la fin, une fois les étapes suivantes faites :

hibernateX.jpg

 

Le code …


On continue, donc

  • Créer un package entite
  • Créer un package utilitaire

Puis

  • Clic droit sur package entite/Ajouter une classe, l’ appeler Etudiant

Coller ce code à l’intérieur (Cest un Pojo):


package entite;

import javax.persistence.*;

@Entity
@Table(name = "ETUDIANT")
public class Etudiant {

       @Id
       @GeneratedValue
       @Column(name = "ID")
       private int id;

       @Column(name = "NOM")
       private String nom;

       @Column(name = "PRENOM")
       private String prenom;

       @Column(name = "COLLEGE")
       private String college;

//Créer les Getters et les Setters

       public int getId() {
           return id;
       }
       public void setId(Integer id) {
           this.id = id;
       }  

       public String getNom() {
           return nom;
       }
       public void setNom(String nom) {
           this.nom = nom;
       }  

       public String getPrenom() {
           return prenom;
       }
       public void setPrenom(String prenom) {
           this.prenom = prenom;
       }  

       public String getCollege() {
           return college;
       }
       public void setCollege(String college) {
           this.college = college;
       }  

}

Ensuite, clic droit sur le package utilitaire, créer une classe appelée Utilitaire et coller ce code dedans :


package utilitaire;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;

import entite.Etudiant;

public class Utilitaire{

        public static void main(String[] args) {

        Configuration cf = new Configuration().configure("hibernate.cfg.xml");

        StandardServiceRegistryBuilder srb = new StandardServiceRegistryBuilder();
        srb.applySettings(cf.getProperties());
        ServiceRegistry sr = srb.build();
        SessionFactory sf = cf.buildSessionFactory(sr);

        Session session = sf.openSession();
        Transaction tx = session.beginTransaction();

        Etudiant etudiant1 = new Etudiant(); 

        etudiant1.setNom("Dupont");
        etudiant1.setPrenom("Jobert");
        etudiant1.setCollege("Lavoisier");

        Etudiant etudiant2 = new Etudiant(); 

        etudiant2.setNom("Dupuis");
        etudiant2.setPrenom("David");
        etudiant2.setCollege("Lavoisier");

        Etudiant etudiant3 = new Etudiant(); 

        etudiant3.setNom("Durand");
        etudiant3.setPrenom("Eric");
        etudiant3.setCollege("Lavoisier");

        session.save(etudiant1);
        session.save(etudiant2);
        session.save(etudiant3);

        tx.commit();
        session.close();
        sf.close();
        }
}

Enfin, pour que cela fonctionne, il nous faut le fichier de configuration de Hibernate : Cliquer droit sur srv, créer un fichier XML appelé hibernate.cfg.xml puis coller ce code dedans :

<!DOCTYPE hibernate-configuration PUBLIC         "-//Hibernate/Hibernate Configuration DTD 3.0//EN"         "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

<session-factory>
        <!-- Configuration de connexion à la base de données -->
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">root</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property>

      	<property name="hibernate.hbm2ddl.auto">create</property>

        <!-- Echo Tout le code SQL dans la console -->
        <property name="show_sql">true</property>

        <!-- Mapper la classe entité -->

    	<mapping class="entite.Etudiant"></mapping>

</session-factory>
</hibernate-configuration>

Exécution du code et création automatique de la table SQL et des enregistrements :


Voilà, maintenant, cliquer droit sur utilitaire.java, faire Run as Java application .

Voici le résultat dans la console :

5.jpg

Et on peut aussi contrôler dans MysqlWorkBench :

6

Publicités