Estou refatorando e melhorando o meu sistema e surgiu uma duvida agora. Antes eu soh usava o GenericDAO e DAO, aí vi varios exemplo usando Interface e outros usando DAOFactory, resolvi tentar fazer com todos esses padroes e funcionou, mas a dúvida é: posso fazer isso? Não tem padrao demais? Nao tem coisa redundante?
A minha estrutura ficou assim:
AlunoDAO:
//imports
public class AlunoDAO extends GenericDAO<Aluno> implements InterfaceAlunoDAO {
public AlunoDAO(Session session, Class<?> classe) {
super(session, classe);
}
public Aluno carregar(String nome) throws HibernateException {
}
public List carregarTodos() throws HibernateException {
}
}
GenericDAO:
//imports
public class GenericDAO<X> {
private Class persistentClass;
protected Session session;
protected Transaction transaction;
protected SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
public GenericDAO(Session session, Class persistentClass) {
this.session = session;
this.persistentClass = persistentClass;
}
public void Salvar(X x) throws HibernateException {
}
public void Atualizar(X x) throws HibernateException {
}
@SuppressWarnings("unchecked")
}
@SuppressWarnings("unchecked")
public List<X> Listar() {
}
}
InterfaceAlunoDAO:
public interface InterfaceAlunoDAO {
public Aluno carregar(String nome) throws HibernateException;
public List carregarTodos() throws HibernateException;
}
InterfaceDAOFactory:
package teste.dao;
public interface InterfaceDAOFactory {
public InterfaceAlunoDAO criarAlunoDAO();
}
DAOFactory:
public class DAOFactory implements InterfaceDAOFactory {
private final Session session;
public DAOFactory() {
super();
session = HibernateUtil.getSession();
}
public InterfaceAlunoDAO criarAlunoDAO() {
return new AlunoDAO(session, Aluno.class);
}
}
Posso manter asssim ou devo retirar alguma coisa, alterar outras? O que acham?
Estava pensando em deixar apenas Interfaces + GenricDAO + DAO, mas nao enxerguei ainda como, se alguem puder me dar uma dica e uma opiniao, agradeço.