Duvida Com DaoGenerico

8 respostas
colored

Bom To Criando minhas classes pra iniciar meu projeto…

Criei meu HibernateUtil

public class HibernateUtil {
	
	private static Logger log = Logger.getLogger(HibernateUtil.class);
	private static SessionFactory factory;
	
	static{
		AnnotationConfiguration cfg = new AnnotationConfiguration();
		cfg.configure();
		factory = cfg.buildSessionFactory();
	}
	
	public static Session getSession(){
		log.info("Opening New Session");
			Session session = factory.openSession();
			session.beginTransaction();
		return session;
	}

E Criei Um GenericDAO

public class GenericDAO<T> implements InterfaceDAO<T, Serializable>{
	
	/* Classe e Session utilizada nos metodos */
	private final Class<T> classe;
	private Session session;
	
	public GenericDAO(Class<T> classe) {
		this.classe = classe;
		session = HibernateUtil.getSession();
	}

	/* Retorna um Objeto, deve ser passar um ID  */
	@Override
	public T procurarPorId(Serializable id) {
		return (T) session.load(classe, id);
	}
	/* Apaga um Objeto  */
	@Override
	public void apagar(T entidade) {
		session.delete(entidade);
		session.getTransaction().commit();
		session.close();
	}
.
.
.

Agora Estou Precisando de um DaoFactory pq ta mto ruim pra instaciar esse Dao Generico…

Porem qdo extendo de Generic DAO ele ker um contrutor para passar uma classe, mas axo q isso n ta certo…

o q eu tenho q arrumar no GenericDAO pra ele n pedir essa classe, pq c não axo q n vai funcionar…

Se alguem souber e puder me ajudar mto obrigado :smiley:

8 Respostas

Andre_Fonseca

opa

a minha sugestão é - deixe o Spring instanciar o DAO para você

para fazer isso o segredo é usar um parâmetro constructor-arg ai você injeta o tipo via construtor

dê uma olhada no artigo abaixo para ver se esclarece um pouco, depois adapte para o que vc já fez

t+

colored

Ah mano… to precisando ir por partes, tipo meio devagar…

Quem sab no proximo projeto eu ja n começo com Spring :smiley:

N da pra fazer isso sem Spring?

eu vi num topico do Guj mas eu perdi ele :confused:

Andre_Fonseca

oi

o Spring é muito fácil de configurar, a única coisa que ele vai fazer é instanciar as classes pra você, de qualquer forma tem outro exemplo no próprio site do hibernate que pode te ajudar

t+

colored

Tipo eu keria algo pratico pra n ter q fazer isso toda hora…

GenericDAO<PessoaFisica> daoPF = new GenericDAO<PessoaFisica>(PessoaFisica.class);

vc n tem alguma ideia sem usar otro framework :D???

Andre_Fonseca

colored:
Tipo eu keria algo pratico pra n ter q fazer isso toda hora…

GenericDAO<PessoaFisica> daoPF = new GenericDAO<PessoaFisica>(PessoaFisica.class);

vc n tem alguma ideia sem usar otro framework :D???

e ae?

o que você quer é evitar ter que fazer o new toda hora certo?

uma idéia é você usar composição, ai o seu DAO teria uma instância do DAO Genérico dentro dele, é isso que vc precisa?

seguem mais alguns links

http://java.sun.com/blueprints/corej2eepatterns/Patterns/DataAccessObject.html

http://www.guj.com.br/posts/list/124907.java#675366

http://javafree.uol.com.br/viewtopic.jbb?t=854693

http://javafree.uol.com.br/topic-12093-IoC-com-WW.html

http://www.guj.com.br/article.show.logic?id=155 - o PicoContainer tb faz IoC

http://java.sun.com/blueprints/corej2eepatterns/Patterns/DataAccessObject.html

colored

bom eu fiz mais o menos assim…
talvez ajude talvez nao ainda vou testar :D…

public class DAOFactory implements InterfaceDAOFactory{

	@Override
	public GenericDAO<Cliente> getClienteDAO() {
		return new GenericDAO<Cliente>(Cliente.class);
	}

	@Override
	public GenericDAO<Colaborador> getColaboradorDAO() {
		return new GenericDAO<Colaborador>(Colaborador.class);
	}

	@Override
	public GenericDAO<PessoaFisica> getPessoaFisicaDAO() {
		return new GenericDAO<PessoaFisica>(PessoaFisica.class);
	}

	@Override
	public GenericDAO<PessoaJuridica> getPessoaJuridicaDAO() {
		return new GenericDAO<PessoaJuridica>(PessoaJuridica.class);
	}

}

:smiley:

Andre_Fonseca

oi

assim deve resolver, ai com o tempo você vai melhorando conforme for precisando…

t+

colored

Isso Mesmo, Valeo Ae :D…

Pelo Menos Saiu alguma coisa kk

Criado 25 de agosto de 2009
Ultima resposta 26 de ago. de 2009
Respostas 8
Participantes 2