bonjour à toutes et a tous
J'ai commencé une grosse application depuis tres peu et j'ai opté pour spring,hibernate,maven,jpa,springMVC sachant que je n'ai pas de connaissance dans ces frameworks. neaumoins je trouve que j'avance pas mal mais bcp de questions me traversent l'esprit et je voudrai avoir votre avis et me dire si ça vaut le coup ce que j'ai fait ou je dois changer de technique?
avant tout j'ai 30 classes,et ce que j'ai fait c'est 2packages (un pour les DAO et leur implementations,un autre pour les services avec leur implementations).
je crée un classe abstraite pour les deux et ensuite une interface pour chaque classes qui se trouve dans mes packages.
voici l'exemple de la classe generique abstraite pour les dao.
chaque classe implemente l'interface et herite de la classe au dessus.(sachez que je dois faire la meme operation pour 30 classes):-)
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 package org.me.dao.jpageneric; import java.util.List; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.persistence.Query; import org.apache.log4j.Logger; public abstract class GenericDAO<T, K> { @PersistenceContext(unitName="database") protected EntityManager em; protected Logger logger=Logger.getLogger(getClass()); public abstract Query getByIdQuery(K id); public abstract Query getAllQuery(); public T save(T saved) { // Vérifie que l'argument n'est pas nul. if (saved == null) { throw new IllegalArgumentException("L'argument de save() ne doit pas être nul."); } logger.debug("Sauvegarde de l'objet " + saved); // Sauvegerde le POJO, et renvoi la version persistante. return (T) em.merge(saved); } // save() public void delete(T deleted) { // Vérifie que l'argument n'est pas nul. if (deleted == null) { throw new IllegalArgumentException("L'argument de delete() ne doit pas être nul."); } logger.debug("Destruction de l'objet " + deleted); //Sauvegerde le POJO, et renvoi la version persistante. em.remove(deleted); } // delete(). @SuppressWarnings("unchecked") public T get(K id) { // Vérifie que l'argument n'est pas nul. if (id == null) { throw new IllegalArgumentException("L'argument de get() ne doit pas être nul."); } logger.debug("Récupération de l'objet de clé " + id); // Récupère le POJO. Query query = getByIdQuery(id); // lancera une exception que nous ne pouvons catcher. return (T) query.getSingleResult(); } @SuppressWarnings("unchecked") public List<T> getAll() { logger.debug("Récupération de tous les objets"); // Récupère les POJO. Query query = getAllQuery(); return (List<T>) query.getResultList(); } }
ensuite j'ai une classe generique pour les services aussi.
et là le meme principe, pour chaque classes de mes classes services(les 30 classes) j'implemente une interface et j'herite de la classes au dessus (genericService).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 package org.me.service.generic; import java.util.List; public abstract class GenericService<T,K> { public abstract T create(T saved); public abstract void remove(T deleted); public abstract T findById(K id) ; public abstract List<T> findAll(); }
bien sur les interfaces j'ai des methodes que je peux pas generaliser, et c'est pour ça que j'ai crée des interfaces pour chaque classes.
ma premiere question : c'est juste ce que j'ai fait pour l'instant?y'a des ameliorations a faire? merci
la deuxieme question : je dois faire les controllers. je dois faire un packages controllers avec 30 classes aussi? generalement c'est des cruds que je fais.
et pour les pages pour chaque action qu'est ce qu'il faut faire? plusieurs pages web je suppose?
pour etre plus claire. si j'ai 4 operations par controllers(CRUD),sachant que j'ai 30 classes, je dois faire minimum 4 pages html pour chaque classes multiplié par 30 classes.
merci à vous tous
Partager