No Grails na realidade você tem um DAO, mas este é implícito: se trata do GORM.
No seu caso, se está reaproveitando o código Java existente (eu faço demais isto), basta que você use apenas a camada de controle e visualização do seu projeto Grails.
Nesta situação portanto o DAO seria o que você já havia criado anteriormente em Java mesmo e está usando na sua aplicação Grails.
No caso em novas implementações, na situação de hoje no dao eu faço as consultas usando hibernate, para pesquisa, onde faços os joins entre outras coisas, pelo que eu pude entender você esta dizendo pra fazer as consultas no Controller, é isso que eu entendi?
No caso eu não quero HQL, Criteria, ou qualquer coisa do tipo no meu controller, quero somente a chamada para um metodo que faça isso, então onde deveria ficar esse metodo?
No caso, o que estou querendo dizer é que o seu controlador deverá acessar os métodos presentes no seu código legado.
No caso de novas implementações no seu sistema eu inclusive recomendo que você as faça somente no código Java legado, usando apenas a camada de controle/visualização do Grails pra lidar com as interações com o usuário.
Blz, quanto ao codigo legado Ok, obrigado pela sugestão.
Outra questão que vem agora, estou pra começar uma outra aplicação, e a principio será feita em grails, dessa forma não terá código legado.
Mais a minha pergunta continua a mesma, no caso de uma aplicação iniciada do zero, aonde ficaria as pesquisar?
Eu acho bacana neste caso que você as implemente como serviços, porque assim pode reaproveita-las entre diferentes controladores caso seja necessário