Olá,
Aqui vai minha humilde opinião sobre o assunto, mas tambem gostaria de ouvir outras opiniões.
Já utilizei Hibernate e tambem mexi um pouco com o OJB, confesso que o OJB me agrada mais que o Hibernate, mais isso é por questão de gosto, o Hibernate está bem a frente do OJB ainda. Quanto a utilização de DAOs com SQL puro, ora, é para isso que o Pattern DAO foi criado, você não precisa saber como os dados estão sendo recuperados apenas recebê-los e utilizá-los. É claro que ficar misturando formas de persistência não é a melhor forma de conduzir um sistema, mas acredito que o Hibernate ainda não é a solução para todos os problemas do mundo, portanto muitas vezes recorrer a outros recursos pode ser crucial para o andamento do desenvolvimento.
Eu acredito que a pontos onde, pra quem utiliza o Hibernate, a utilização de SQL puro seria muito mais viável, por exemplo, eu não me conformo dele não ter um session.deleteByPk();, sei lá como ele faz isso internamente, mais ter que ter um objeto associado a uma sessão do Hibernate só pra deletá-lo é no mínimo horrivel.
Em tempo, acredito que a manutenabilidade do sistema, não está relacionada a tecnologia, framework ou pattern utilizado e sim em como esses são empregados, um código SQL bem feito pode ser entendido por qualquer especialista em Hibernate e vice-versa. Ainda se o cara não souber dar manutenção em um código SQL dificilmente saberá fazê-lo no Hibernate e isso é outro problema.
Eu desenvolvo um sistema de médio porte hoje e por questões de problemas para utilização do Hibernate, ele está sendo desenvolvido em DAOs puros e confesso a vocês que não me arrependo nem um pouco, conheço bem SQL e tambem conheço o pattern DAO e isso está sendo suficiente para abstrair completamente minha camada de persistência de maneira transparente e sólida.
Acho que a ferramenta de mapeamento OR “ideal” ainda não foi inventada, pois Hibernate, OJB e outros, podem facilitar muito seu trabalho mais lhe acrescentaram uma centena de erros até que você os domine bem, além é claro, da situação citada pelo Jeveaux, onde a utilização de SQL é muito mais viável. A teoria de que o Hibernate resolve todos os problemas do mapeamento OR ainda é só teoria, e será por um bom tempo até provar o contrário.
Bom, como eu disse, essa é apenas minha opinião, é um assunto que eu realmente gosto e poderia ficar aqui falando mais de uma hora, mais preciso trabalhar… gostaria de ver oque o resto do pessoal acha.
