Duvida definição DAO generico?

1 resposta
P

Olá,

gostaria de não precisar passar a classe class pelo construtor na hora de chamar
a classe DAO tem como internamente achar a classe e passar sem ter que passar via

chamada ???

se alguém puder me ajuda agradeceria…

abs

--hoje como está

    @SuppressWarnings("unchecked")
	public DAO(Session session, Class persistentClass) {
        this.session = session;
        this.persistentClass = persistentClass;
    }

--como queria que ficasse só passar a session via parametro
--  e ter um jeito internamente de passar o nome da classe do DAO que estou usando
-- por exemplo (UsuarioDAO que seria o objeto Usuario)

    @SuppressWarnings("unchecked")
	public DAO(Session session) {
        this.session = session;
        this.persistentClass = persistentClass;
    }
public class DAO<T> {

    private static Logger logger = Logger.getLogger(DAO.class);
    @SuppressWarnings("unchecked")
	private Class persistentClass;
    protected Session session;

    
    @SuppressWarnings("unchecked")
	public DAO(Session session, Class persistentClass) {
        this.session = session;
        this.persistentClass = persistentClass;
    }

    protected Session getSession(){
		return session; 	
	}
    
    @SuppressWarnings("unchecked")
    public T load(Long id) throws DaoException{
        logger.info("lendo " + persistentClass + " com id " + id);
        try{
            return (T) session.load(persistentClass, id);
        }catch(Exception e) {
    		throw new DaoException("Erro="+e);
    	}
    }
   
    public void save(T t) throws DaoException{
        logger.info("salvando  " + t);
        try{
        	session.save(t);	
        }catch(Exception e) {
    		throw new DaoException("Erro="+e);
    	}
        
    }
    
	public void delete(T t) {
		logger.info("Deletando " + t);
		try{
		    session.delete(t);
		}catch(Exception e) {
    		throw new DaoException("Erro="+e);
    	}    
	}
	
    @SuppressWarnings("unchecked")
	public List<T> list() {
		logger.info("Listando todos");
    	try{
		     return session.createCriteria(persistentClass).list();
    	}catch(Exception e) {
    		throw new DaoException("Erro="+e);
    	}     
    	
    }

    public void merge(T t) {
        logger.info("Salvando ou atualizando " + t);
        try{
            session.merge(t);
        }catch(Exception e) {
    		throw new DaoException("Erro="+e);
    	}    
    } 
}

1 Resposta

P

Pesquise sobre injeção de dependencia.

O framework Spring resolve isso pra vc.

abraços.

Criado 14 de setembro de 2009
Ultima resposta 14 de set. de 2009
Respostas 1
Participantes 2