Bonjour à tous, je sollicite fortement votre attention sur ce problème dans le cadre de préparation de mon examen pour le 10 septembre (très très important pour moi).

Je vous remercie infiniment d'avance pour l'aide et l'attention que vous m'apporterez, n’hésitez pas à me demander plus amples informations.

Le souçis est que mon professeur nous a donné 3 classes avec lesquels on doit se débrouiller mais j'ai vraiment du mal à comprendre où et comment faire le lien entre ces classes.

Voiçi l'image de ce que contient mon projet actuellement:

Nom : jv.gif
Affichages : 577
Taille : 542,5 Ko

Résumer: J'ai créer un projet JSP, j'ai installer le serveur Tomcat, j'ai importer les librairies nécessaires que le prof nous a donné et j'ai pu générer avec JPA les Models qui sont la représentation de ce qu'il y a dans ma DB mysql. (j'ai donc configurer tous ce qu'il faut pour normalement avoir accès aux données de la DB).

Voiçi donc les classes qui me posent souçis :

La class "EMF" (qui se trouve dans un dossier qui s'appelle "connection"):

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
 
 
package com.og.connection;
 
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
 
/** 
 * Class to get a connection to the database
 * 
 */
public final class EMF {
 
	private static EntityManagerFactory emfInstance =
	        Persistence.createEntityManagerFactory("locationvoituresjsp");
 
    private EMF() {}
 
    public static EntityManagerFactory getEMF() {
        return emfInstance;
    }
 
    public static EntityManager getEM() {
        return emfInstance.createEntityManager();
    }
 
 /*	Create EntityManager in others classes
  * EntityManager em = EMF.get().createEntityManager();
  * try {
  *     // ... do stuff with em ...
  * } finally {
  *     em.close();
  * }
  */
}
La classe "EntityFinder" qui est une interface ainsi que la classe "EntityFinderlmpl" qui se trouvent tous les 2 dans le dossier "DAO":

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
 
 
package com.og.dao;
 
import java.util.List;
import java.util.Map;
 
import javax.persistence.EntityManager;
 
/**
 * 
 * 
 */
public interface EntityFinder<T> {
 
	/**      
         * Interface method to find an entity from the database
         *       
         * @param <T>
         *          Generic backing bean
         * @param Object
         *          Backing bean's id to find
         *                   
         * @return 
         *                      Generic backing bean
         */	
	public T findOne(T t, int id);
 
	/**      
         * Interface method to find a result of entities based on a NamedQuery from the database
         *       
         * @param String
         *          The NamedQuery          
         * @param <T>
         *          Generic backing bean
         * @param param
         *          Query parameters
         *          For Date params, key must contains the word(ci) 'date'
         *
         * @return 
         *                      List of generic backing beans
         */	
	public <K, V> List<T> findByNamedQuery(String namedQuery, T t, Map<K, V> param);
 
	/**      
         * Interface method to find a result of entities based on a customQuery from the database
         *       
         * @param String
         *          The customQuery          
         * @param <T>
         *          Generic backing bean
         * @param param
         *          Query parameters
         *          For Date params, key must contains the word(ci) 'date'
         *          
         * @return 
         *                      List of generic backing beans
         */	
	public <K, V> List<T> findByCustomQuery(String customQuery, T t, Map<K, V> param);	
}
et voiçi le EntityFinderlmpl :

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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
 
 
package com.og.dao;
 
import java.io.Serializable;
import java.util.*;
import javax.inject.Inject;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import javax.persistence.TemporalType;
 
import org.apache.log4j.Logger;
 
import com.og.connection.EMF;
 
/** 
 * Class to perform entity CRUD with the database
 * 
 */
public class EntityFinderImpl<T> implements EntityFinder<T>, Serializable {
 
	private static final long serialVersionUID = 1L;
 
	/**
     * Default constructor
     */
	public EntityFinderImpl(){
		super();
	}
 
	// Log4j	 
	@Inject
	private transient Logger log;
 
	@Override
	public T findOne(T t, int id) {
 
		EntityManager em = EMF.getEM();		
		Class<? extends Object> ec = t.getClass();
		try {
 
	    	t = (T)em.find(ec, id);
 
	    	em.clear();
 
	    	log.debug("Bean " + t + " find from database: Ok");
	    } finally {
	        em.close();
	        log.debug("Close em : Ok");
	    }
 
		return t;
	}
 
	@Override
	public <K, V> List<T> findByNamedQuery(String namedQuery, T t, Map<K, V> param) {
 
		List<T> listT = new ArrayList<T>();
		Class<? extends Object> ec = t.getClass();
 
		EntityManager em = EMF.getEM();
		try {
		    Query query = em.createNamedQuery(namedQuery, ec);
 
	    	if(param != null) {
 
	    		setParameters(query, param);		
	    	}
	    	listT = (List<T>) query.getResultList();
 
	    	log.debug("List " + t + " size: " + listT.size());       
	    	log.debug("Named query " + namedQuery + " find from database: Ok");	    
		}
		finally {
 
			em.clear();
	        em.close();
	    }
		return listT;
	}
 
	@Override
	public <K, V> List<T> findByCustomQuery(String customQuery, T t, Map<K, V> param) {
 
		List<T> listT = new ArrayList<T>();
		Class<? extends Object> ec = t.getClass();
 
		EntityManager em = EMF.getEM();
		try {
	    	Query query = em.createQuery(customQuery, ec);
	    	if(param != null) {
 
	    		setParameters(query, param);
	    	}
	    	listT = (List<T>) query.getResultList();
 
	    	log.debug("List " + t + " size: " + listT.size());       
	    	log.debug("Custom query " + customQuery + " find from database: Ok");
		}
		finally {
 
			em.clear();
	        em.close();
	    }
		return listT;
	}
 
	/**  
         * @param query
         * @param param
         * @return
         *                      the query with parameters
         */
	private <K, V> void setParameters(Query query, Map<K, V> param) {
 
		Set<Map.Entry<K, V>> entries = param.entrySet();
		Iterator<Map.Entry<K, V>> itr = entries.iterator();
		while(itr.hasNext()){
			Map.Entry<K, V> entry = itr.next();
			if((boolean) entry.getKey().toString().toLowerCase().contains("date"))
				query.setParameter((String) entry.getKey(),(Date) entry.getValue(), TemporalType.DATE);
			else
				query.setParameter((String) entry.getKey(),entry.getValue());
			//log.debug("entry.getValue: " + entry.getValue());
		}
	}
 
}
Alors je comprend vaguement à quoi servent les classes. Une permet la connection à la DB et une autre permet la récupération des objets qui se trouvent dans ma DB.

J'ai donc créer une servlet ainsi qu'une vue pour préparer mes tests, mais je bloque... Je ne sais pas à quel endroit exactement ni comment organiser tous ça de manière à pouvoir renvoyer simplement un Objet de ma DB à ma vue. En sachant qu'il faut prendre en compte la persistance des données. Alors je pensais au début appeler toutes ces classes que mon prof m'a donné dans la méthode doPost() de la servlet que j'ai créer pour les test mais je ne suis pas sûr de la bonne pratique

J'espère que tous ceci parlera facilement à quelqu'un, car je suis un peu perdu. Je vous remercie encore de l'attention que vous apporterez. Un exemple de comment je pourrais faire le lien entre tous ça je pense m'aiderai énormément pour l'implémenter dans ma méthode doPost(); (si c'est le bon endroit)

Merci encore à vous, c'est très très important pour moi COMPRENDRE et ainsi réussir mon examen.