[debutant] Configuration hibernate avec les annotations
Bonjour,
Je suis débutant en hibernate et je souhaiterais me mettre directement aux annotations.
La première étape est donc la configuration de mon projet Eclipse.
Je suis la documentation
http://www.hibernate.org/hib_docs/an...single/#d0e754
Base de donnée MySQL :
Table : clients
Champs : client_id (clef primaire), groupe_client
Classe POJO (je crois que c'est le terme pour la classe beans)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| package com.hibernate;
import java.io.Serializable;
import org.hibernate.annotations.Entity;
@Entity
public class clients implements Serializable{
private static final long serialVersionUID = 1L;
int client_id;
private String groupe_client;
public int getClient_id() {
return client_id;
}
public void setClient_id(int client_id) {
this.client_id = client_id;
}
public String getGroupe_client() {
return groupe_client;
}
public void setGroupe_client(String groupe_client) {
this.groupe_client = groupe_client;
}
} |
Mon fichier hibernate.cfg.xml :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//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.password">root</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/bdd_crm</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<mapping package="com.hibernate"/>
<mapping class="clients"/>
</session-factory>
</hibernate-configuration> |
Je ne sais pas si j'ai bien fait de fusionner la configuration de la connexion. Dans la documentation, on voit le mapping entre les balises session-factory
http://www.hibernate.org/hib_docs/an...single/#d0e754
Citation:
Les packages et les classes annotées sont déclarés dans votre fichier de configuration XML habituel (généralement hibernate.cfg.xml). Voici un équivalent de la déclaration ci-dessus :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| <!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<mapping package="test.animals"/>
<mapping class="test.Flight"/>
<mapping class="test.Sky"/>
<mapping class="test.Person"/>
<mapping class="test.animals.Dog"/>
<mapping resource="test/animals/orm.xml"/>
</session-factory>
</hibernate-configuration> |
Mon fichier de test clientsTest qui teste l'insertion :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
....
import com.hibernate.HibernateUtil;
import com.hibernate.clients;
import org.hibernate.Session;
public class clientsTest {
@Test
public void testSetClient_id() {
clients c = new clients ();
//Session session = HibernateUtil.currentSession();
Session session = HibernateUtil.getSession();
session.beginTransaction();
c.setClient_id(88);
c.setGroupe_client("TEST HIBERNATE");
session.save(c);
session.getTransaction().commit();
} |
HibernateUtile.java (copié collé de la documentation)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| package com.hibernate;
import org.hibernate.*;
import org.hibernate.cfg.*;
public class HibernateUtil {
private static final SessionFactory sessionFactory;
static {
try {
sessionFactory = new AnnotationConfiguration().buildSessionFactory();
} catch (Throwable ex) {
// Log exception!
throw new ExceptionInInitializerError(ex);
}
}
public static Session getSession()
throws HibernateException {
return sessionFactory.openSession();
}
} |
Malheuresement, j'obtiens ce message d'erreur :
Code:
1 2 3 4
| java.lang.ExceptionInInitializerError
at com.hibernate.HibernateUtil.<clinit>(HibernateUtil.java:16)
at com.hibernate.test.clientsTest.testGetGroupe_client(clientsTest.java:29)
.... |
D'après vous, ou est ce que je me suis trompé ?
J'ai fait quelques recherches sur Google sur le mot clef java.lang.ExceptionInInitializerError mais malheureusement je pense que cela ne correspond pas au meme problème