Opa galera,
Eu tava escrevendo umas coisas aqui pra colocar num material sobre o Hibernate e uma das partes seria mostrar como implementar um DAO usando o Hibernate. Me baseando numa implementação de um sistema que eu estou desenvolvendo aqui na universidade, terminei esbarrando em uma das diretivas do padrão, a definição de um método para cada query feita no banco.
Sendo uma implementação feita com o Hibernate, eu pensei em não seguir o padrão nessa onda de “um método pra cada query”. Criei um DAO genérico, que insere, atualiza, deleta, lista e busca usando “exemplos” e dentro desse mesmo DAO coloquei mais um método, executarBusca a assinatura ficou assim:
O parâmetro String é apenas o nome da Named Query que foi definida lá nos arquivos de mapeamento e o Map é o conjunto de pares “nome-parâmetro” da query. Por exemplo, a query pode ser:
Então eu colocaria um objeto no Map assim:
O próprio método se encarregaria de colocar o parâmetro lá.
Fazendo desse modo, a quantidade de código a ser mantido diminui de uma maneira drástica, porque eu não vou mais precisar escrever um método pra cada select, a maioria deles vai estar definida como Named Queries nos arquivos de mapeamento do Hibernate.
Eu pensei em criar métodos de busca nos DAOs quando fosse necessário usar código específico de um banco ou quando as pesquisas fossem feitas usando a Criteria Query API.
Alguém tem alguma idéia sobre alguma outra maneira que isso poderia ser feito? Alguém já fez coisa parecida?
[editado]Editei no nome pra ficar mais relacionado ao assunto né[/editado]




