2
respostas

Generic Dao

Bom dia, com o exemplo consegui o dao genérico. Agora gostaria de saber como seria possível eu usar o Dao genérico em outra classe? Estou tentando criar um produtor para isso mas n estou conseguindo.

Basicamente eu gostaria de poder usar tanto assim:

private Dao<Autorizacao> dao;

Quanto assim:

private AutorizacaoDao dao;

Pois existem daos que além dos metódos do dao generico preciso criar outros. Obrigado pela ajuda

2 respostas

Olá Mário. Geralmente a forma mais eficiente ou comum de se fazer isso é herdando de um DAO genérico. Por exemplo.

public class AutorizacaoDao extends  GenericDAO {

    // métodos do seu dao especializado
}

Quando você for charmar um método do seu Dao Generico você não rpecisa necessáriamente sobrescrever a classe do dao genérico no AutorizacaoDao. Apenas chame-a diretamente passando o objeto.

exemplo

public class AutorizacaoService {

    @Inject
    AutorizacaoDao  autorizacaoDao;

    autorizacaoDao.persistOrMerge(AutorizacaoEntity);

}

Neste caso o método "persistOrMerge se encontra no Dao genérico. você não precisa necessariamente sobrescrever este método na sua classe AutorizacaoDao.

Boa noite Jamile, obrigado pela resposta. Antes eu tinha feito um Dao para as minhas classes e ele funcionava perfeitamente. Mas eu comecei a ver que existiam muitos DAOs que simplesmente herdavam esse dao genérico e pronto, n tinham nenhum método a mais. Então criei esse outro Dao generico onde eu só precisava fazer algo do tipo

private Dao<Classe> dao;

e ele funcionava perfeitamente. Isso foi muito bom, pois eliminei vários daos desnecessários. Só q agora n estou sabendo como criar um metodo produtor que consiga criar um classe que extenda desss Dao

Realmente gostaria de ter esse Dao substituindo daos simples e também conseguir usá-lo em daos onde eu precise dos métodos do dao generico + métodos do Dao específico.

Na minha visão um dao assim é bem mais útil do q um Dao onde todos os outros daos tem que extender, até os daos mais simples, não entendo o motivo do dao pattern nao ser esse dao que substitua os daos simples e consiga ser superclasse dos daos mais complexos. Aguardo resposta, obrigado

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software