Tutoriel Maven/Hibernate

Prérequis :
Eclipse, Maven et jdk, jre installés. Une base de données créée avec MySQL dans laquelle se trouve une table CONTACT.

Procédure :

Ouvrir Eclipse

Création d'un nouveau projet Maven

New Other Maven/Maven Project

Ajout des dépendances


<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.hibernate</groupId>
<artifactId>tutorial</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>thierry</name>
<url>http://maven.apache.org</url>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>3.6.7.Final</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.18</version>
</dependency>
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.15.0-GA</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-nop</artifactId>
<version>1.6.2</version>
</dependency>
</dependencies>
</project>

Création du fichier de configuration hibernate

Créer un fichier hibernate.cfg.xml dans src/<package>/
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost/hibernatetutorial</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">lpiem</property>
<property name="show_sql">true</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- Mapping files -->
<mapping resource="Contact.hbm.xml"/>
</session-factory>
</hibernate-configuration>

Mapping des données de la table

Sur le package src/<package>/ faire New Other Hibernate/Hibernate Mapping File
Entrer le username et le password utilisés dans la BDD
En cliquant sur Refresh, on récupère les tables, sélectionner la table contact
Un fichier contact.hbm.xml est généré. Attention il faut changer les noms des propriétés dans ce fichier afin qu'ils correspondent avec les noms de la classe Contact.

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.hibernate.tutorial.Contact" table="CONTACT">
<id name="id" type="long" column="ID">
<generator class="assigned" />
</id>
<property name="firstName">
<column name="FIRSTNAME" />
</property>
<property name="lastName">
<column name="LASTNAME" />
</property>
<property name="email">
<column name="EMAIL" />
</property>
</class>
</hibernate-mapping>

Création des classes

Une classe Contact qui sera mappée sur la table CONTACT de la BDD.
package com.hibernate.tutorial;

/**
* @author Deepak Kumar
*
* http://www.roseindia.net
* Java Class to map to the datbase Contact Table
*/
public class Contact {
private String firstName;
private String lastName;
private String email;
private long id;

/**
* @return Email
*/
public String getEmail() {
return email;
}

/**
* @return First Name
*/
public String getFirstName() {
return firstName;
}

/**
* @return Last name
*/
public String getLastName() {
return lastName;
}

/**
* @param string Sets the Email
*/
public void setEmail(String string) {
email = string;
}

/**
* @param string Sets the First Name
*/
public void setFirstName(String string) {
firstName = string;
}

/**
* @param string sets the Last Name
*/
public void setLastName(String string) {
lastName = string;
}

/**
* @return ID Returns ID
*/
public long getId() {
return id;
}

/**
* @param l Sets the ID
*/
public void setId(long l) {
id = l;
}
}

Une classe Main qui importe :
package com.hibernate.tutorial;

import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class FirstExample {
public static void main(String[] args) {
Session session = null;

try {
// This step will read hibernate.cfg.xml and prepare hibernate for
// use
SessionFactory sessionFactory = new Configuration().configure()
.buildSessionFactory();
session = sessionFactory.openSession();
// Create new instance of Contact and set values in it by reading
// them from form object
System.out.println("Inserting Record");
Contact contact = new Contact();
Transaction tx = session.beginTransaction();
contact.setId(3L);
contact.setFirstName("Thierry");
contact.setLastName("Duchassin");
contact.setEmail("thierry.duchassin@gmail.com");
session.save(contact);
tx.commit();
System.out.println("Done");
} catch (Exception e) {
e.printStackTrace();
} finally {
session.flush();
session.close();
}
}
}
Cette classe lit le fichier hibernate.cfg.xml, ouvre une session, instancie un objet contact et attribue les valeurs des propriétés.