DAO com Hibernate

Galera estou com uma dúvida em relação com o DAO no hibernate.

Existe alguma maneira de criar um DAO que possa ser usado em toda minha aplicação? ao invés de criar um para cada tabela!!!

O DAO que estou usando é esse

public class ProdutoDAO {

    private Session session;

    public ProdutoDAO(Session session) {
        this.session = session;
    }

    public void salva(Produto p) {
        this.session.save(p);
    }

    public void remove(Produto p) {
        this.session.delete(p);
    }

    public Produto procura(Long id) {
        return (Produto) this.session.load(Produto.class, id);
    }

    public void atualiza(Produto p) {
        this.session.update(p);
    }

Como vcs podem ver nesse DAO tem o nome da tabela, tem como fazer uma genérica para toda minha aplicação?
Aguardo a ajuda de vcs

http://www.urubatan.com.br/dao-generico-um-exemplo-a-pedidos/

De uma olhada na apostila fj28 da caelum lá tem um exemplo de coomo fazer isso: http://www.caelum.com.br/caelum/curso-28.jsp

http://blog.caelum.com.br/2006/08/26/ei-como-e-o-seu-dao-ele-e-tao-abstraido-quanto-o-meu/

usando generics do java 5 em diante

Consegui esse aqui acho que o mais simples http://www.guj.com.br/posts/list/58773.java
Valeu pela ajuda:)

Olá Diogo.

Quero só chamar sua atenção pra um detalhe: você está percebendo que seu ProdutoDAO não está fazendo nada mais do que delegar sua responsabilidade pro Session? Por que utilizar o DAO para o Hibernate se o Session já resolve tudo? Acho que o Session já é o DAO genérico que você está procurando.

E mais uma coisa:

[quote=diogoprosoft]Consegui esse aqui acho que o mais simples http://www.guj.com.br/posts/list/58773.java
Valeu pela ajuda:)[/quote]
O link acima mostra um DAO que gerencia transações. Cuidado com isso.

Aproveitando o assunto…

O que vocês costumam fazer?

Gerenciar as transações manualmente ou delegar isso para uma classe, Dao, filtro, interceptor, etc…

Eu tenho um filtro que gerencia isso pra mim, acho uma boa prática…

O que vocês acham disso?

[quote=pablofaria]Aproveitando o assunto…

O que vocês costumam fazer?

Gerenciar as transações manualmente ou delegar isso para uma classe, Dao, filtro, interceptor, etc…

Eu tenho um filtro que gerencia isso pra mim, acho uma boa prática…

O que vocês acham disso?[/quote]
O filter a que você se refere é da Servlet API?
Se for, é legal, mas e se você precisar gerenciar suas transações em uma aplicação Swing?
Eu sempre quis fazer isso usando aspectos, mas nunca usei. No final, acabo gerenciando as transações na camada de aplicação mesmo. O ruim é ter que espalhar código de gerenciamento de transação pela camada toda.