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)
Mon fichier hibernate.cfg.xml :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; } }
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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>
http://www.hibernate.org/hib_docs/an...single/#d0e754
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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)
Malheuresement, j'obtiens ce message d'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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(); } }
D'après vous, ou est ce que je me suis trompé ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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) ....
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
Partager