Hibernate X DAO

Estava aqui pensando…
Muito vejo falar sobre DAO com Hibernate, aí me veio uma dúvida:
O próprio Hibernate pode ser considerado uma implementação de DAO? O que é um DAO se não um mecanismo para abstrair o mecanismo de persistencia dos objetos? E o Hibernate idem, não? A diferença é que o DAO pode ser implementado para operar em cima arquivos XML ou o que quer que seja, enquanto o Hibernate é mais voltado para um RDBMS.
Digo, considerando que um sistema só vai acessar dados provenientes de um banco de dados relacional, há mesmo a necessidade, na opinião de vocês, de encapsular o Hibernate em um DAO?
Eu, particularmente, não estou conseguindo enxergar tal necessidade.
Teoricamente, eu automaticamente já teria um DAO para Firebird, MySql, HSQL, Oracle, etc, apenas configurando o Hibernate apropriadamente…

Olá, eu penso que o hibernate é uma camada a mais, pois se tentarmos tirar essa implementação de persistencia ( DAO ) , cairemos em outra.

Podemos tirar o dao para usar o hibernate com generics save <?> (objeto o){ } , porém sempre precisarmos de um tipo de persistencia especificas, e teremos colocar em algum lugar do projeto.

Se não for dao , acredito que cairá em algum tipo de isolamento para nao misturar as classes.