Bonjour à tous,
je me suis lancé dans la persistance Java avec JPA, j'ai donc créé une petite base de donnée et créé les entity correspondantes :
J'ai ensuite créé un DAO générique et un DAO spécifique à cette entité :
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 package com.persistance.tuto.entities; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name = "file_type") public class FileType { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Integer id_file_type; private String file_type; /*Getter et Setter*/ }
DAO générique :
DAO spécifique :
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80 package com.persistance.tuto.dao; import java.util.List; import javax.persistence.EntityManager; import javax.persistence.EntityNotFoundException; import javax.persistence.PersistenceContext; import javax.persistence.Query; import org.apache.log4j.Logger; import com.persistance.tuto.exception.MyException; public abstract class Dao<T> { @PersistenceContext(unitName = "pfr_PU") private EntityManager em; private Logger logger = Logger.getLogger(this.getClass()); public EntityManager getEm() { return em; } public void setEm(EntityManager em) { this.em = em; } protected void create(T newObject) { em.persist(newObject); logger.debug("Nouvelle insertion réalisé."); } @SuppressWarnings("unchecked") protected T find(Integer id) { return (T) em.find(this.getClass(), id); } @SuppressWarnings("unchecked") protected T getReference(Integer id) throws MyException { try { return (T) em.getReference(this.getClass(), id); } catch (EntityNotFoundException e) { throw new MyException(e, this.getClass().getName() + "getReference() : L'état de l'entité ne peut pas être consulté."); } } @SuppressWarnings("unchecked") protected List<T> sendQuery(String query) { Query q = em.createQuery(query); return (List<T>) q.getResultList(); } @SuppressWarnings("unchecked") protected Boolean update(Integer id, T newEntity) { Boolean isUpdate = false; T classFind = null; classFind = (T) em.find(this.getClass(), id); if (classFind != null) { classFind = newEntity; em.flush(); isUpdate = true; } return isUpdate; } @SuppressWarnings("unchecked") protected Boolean remove(Integer id) { Boolean isRemove = false; T classFind = null; classFind = (T) em.find(this.getClass(), id); if (classFind != null) { em.remove(classFind); isRemove = true; } return isRemove; } }
Mon fichier persistance.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
26
27
28
29
30 package com.persistance.tuto.dao; import com.persistance.tuto.entities.FileType; import com.persistance.tuto.exception.MyException; public class FileTypeDao extends Dao<FileType> { public FileTypeDao() { super(); } public void create(FileType newFileType) { super.create(newFileType); } public FileType find(Integer id) { return super.find(id); } public FileType getReference(Integer id) throws MyException { return super.getReference(id); } public Boolean update(Integer id, FileType newFileType) { return super.update(id, newFileType); } public Boolean remove(Integer id) { return super.remove(id); } }
et enfin ma classe de test junit :
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 <?xml version="1.0" encoding="UTF-8"?> <persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"> <persistence-unit name="pfr_PU" transaction-type="RESOURCE_LOCAL"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <class>com.persistence.tuto.entities.FileType</class> <exclude-unlisted-classes /> <properties> <property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost:5432/pfr" /> <property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver"/> <property name="javax.persistence.jdbc.user" value="postgres" /> <property name="javax.persistence.jdbc.password" value="xxxxxxx" /> </properties> </persistence-unit> </persistence>
C'est cette classe de test qui me pose problème, quand je l'exécute, rien ne se passe, elle m'affiche "Création de Entity Manager." et c'est tout!!
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 package com.persistence.tuto.dao; import javax.persistence.EntityManager; import javax.persistence.Persistence; import junit.framework.TestCase; import org.apache.log4j.Logger; import org.junit.After; import org.junit.Before; import org.junit.Test; import com.persistence.tuto.entities.FileType; public class FileTypeDaoTest extends TestCase { private FileTypeDao ftd; private EntityManager em; private Logger logger = Logger.getLogger(this.getClass()); @Before protected void setUp(){ logger.debug("Création de Entity Manager."); em = Persistence.createEntityManagerFactory("pfr_PU").createEntityManager(); logger.debug("Création de Entity Manager ok."); ftd = new FileTypeDao(); ftd.setEm(em); } @After protected void tearDown(){ if (ftd.getEm() != null) ftd.setEm(null); ftd = null; } @Test public final void testCreateClassOfFileType() { FileType ft = new FileType(); ft.setFile_type("test"); ftd.create(ft); } }
Je pense qu'il me manque hibernate mais je ne sais pas l'utiliser dans mon context, quelqu'un pourrait m'aider??
Merci
Partager