Bonjour à tous,

je suis entrain de mettre en place un petit projet J2EE (JSF/Richfaces/Hibernate) pour m'entrainer un peu !

J'aurai une petite question sur la couche DAO.

Voici mes codes

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
 
public abstract class AbstractDAOFactory {
 
	public abstract DAO<Object> getCrudDAOHibernate();
 
	public abstract DAO<Object> getCompanyDAO();
 
	public abstract DAO<Object> getPersonDAO();
 
 
	/**
         * Méthode permettant de récupérer une factory de DAO
         * @param type
         * @return AbstractDAOFactory
         */
	public static AbstractDAOFactory getFactory(FactoryType type){
 
		if(type.equals(FactoryType.DAO_FACTORY)){
			return new DAOFactory();
		}
 
		if(type.equals(FactoryType.XML_DAO_FACTORY)){
			//return new XMLDAOFactory();
		}
 
		return null;
	}
}
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
 
public class DAOFactory extends AbstractDAOFactory{
 
	@Override
	public DAO<Object> getCrudDAOHibernate() {
		return new CrudDAOHibernate();
	}
 
	@Override
	public DAO<Object> getCompanyDAO() {
		return new CompanyDAOImpl();
	}
 
	@Override
	public DAO<Object> getPersonDAO() {
		return new PersonDAOImpl();
	}
 
 
}
Ensuite dans la couche métier, j'utilise ça
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
PersonDAO persDAO = (PersonDAO) AbstractDAOFactory.getFactory(FactoryType.DAO_FACTORY).getPersonDAO(
);
 
public void embaucher(Person p) {
   persDAO.create(p)
}
....
Or ce que j'aime pas dans tout ça, c'est qu'on sait le type d'implémentation qu'on va utiliser, c'est DAO_FACTORY, ça aurait pu etre XML_FACTORY.

Aurais-vous une idée de la manière dont je dois m'y prendre pour cacher le type de l'implémentation dans la couche métier...... (Spring par ex ?)

merci!!