já leu sobre o JPA 2 ?
a especificação na verdade é um ponto de convergencia…
dificlmente uma especificação vai correr a frente da implementação… afinal novas ideias aparecem o tempo todo… e a especificação é um conjunto das melhores… e tenta reunir tudo em um sento comum e ponto comum…
realmente tem loucuras de bancos legados que é foda de fazer com JPA e da dor de cabeça… e vc acaba usando anotações do Hiberante… mas no geral, pra anotaçõeso JPA cobre tudo… desde que não seja um banco maluco legado…
…
Para buscas, eu não troco os Criterias pelas HQLs do JPA, mas também não exponho elas para meu projeto, e uso objetos Queries, para meu projeto não tercontato com o Hiberante, e sim com uma interface de mais alto nivel…
assim posso continuar reusando… por exemplo, trocar do Hiberante 3 para a proxima versão que vai implementar o JPA 2, vai ser relativamente fácil para meus projetos, pois só vou reescrever a camada de persistencia, um conjunto de 8 classes no máximo.
Lógico que não vou pegar meu projeto que ta escrito com criterias 3.x, e com hiberante e etc, e enfiar o Hibernate novo para JPA 2, pq isso seria sem sentido… porem vou conseguir reusuar a mesma lógica em novos projetos, sem ser afetado pela camada de persistencia…
…
Obs.: eu entendo sua revolta… já pensei igual, mas me ajudar muito, conseguir não programar diretamente com o hiberante…
aqui vai um exemplo de código em meus projetos…
[code]repository.addAll(carros);
repoistory.removeAll(telefones);
List<PessoaFisica> pessoasAtivas = queries.forPessoa().listPessoasAtivas().queryOn(repository);
[/code]
todas são de facil leitura, Repository éuma INterface… e a implementação normal que uso é pra Hiberante… mas já precisei usar pra SQL puro entre outras firulas, por questões diversas
…
em momento algum em meu projeto há um new HibernateRepository … quando não uso algo como spring, o HiberanteRepository vem sempre de algo como
Repository repository = minhaFabrica.createRepository();
no caso é só trocar o que vem do CreateRepository e voala! … mudo a implementação facilmente…