Estrutura de DAO GÊNERICO

Estou com dúvida sobre e estrutura de um DAO Gênerico para um projeto web com Spring e Hibernate. Se alguém ajudar só a estrutura eu agradeço.

Que dúvida? Tenta ser mais específico.

Tipo se vai usar interface, classe abstrata, e seus relacionamentos. Estou fazendo assim:

public abstract class<T, id> {

//métodos comuns
... 
}

Depois eu faço uma classe ClienteDao por exemplo, estender essa classe abstrata.
Minha dúvida é se está legal dessa forma, ou é melhor fazer com interface e como ficaria a estrutura das classes.

Não ficou claro se você quer um DAO que possa ser utilizado para diferentes entidades, genérico, ou se sua necessidade é criar um design onde seja fácil substituir a implementação dos DAO caso a tecnologia que você for utilizar seja alterada, por exemplo de JDBC para JPA.

Certo. Estou pensando no DAO que possa ser utilizado para diferentes entidades.

Não sei se é o que você precisa, mas esse link
do blog do uaihebert pode te ajudar.

Tem uma aplicação completa e ele faz Dao Genérico com Hibernate.

Obrigado. Estou fazendo dessa forma. Queria saber se pode ser a forma mais legal, ou com interface fique melhor.

Não querendo jogar contra meu post mas se você está usando Spring, utilize o SpringData. Com ele você não precisa de DAO genérico e facilita sua persistencia em muita coisa.

Aqui tem o post falando sobre isso: http://uaihebert.com/aplicacao-web-completa-angular-twitter-bootstrap-spring-mvc-data-e-security/

E aqui tem o código: https://github.com/uaihebert/uaicontacts