Hibernate Core ou JPA2

3 respostas
israel.fonseca

Pessoal to com uma dúvida referente a usar o Hibernate Core ou usar tudo pela Interface JPA2. Não dou a mínima para portabilidade entre servers e tal, minha dúvida é mais funcional mesmo. Existe algum recurso significativo hoje no hibernate que não conseguiria reproduzir via JPA2? E principalmente: Hibernate Criteria ou JPA Criteria Queries? O Hibernate Criteria sera aposentado a partir de hoje? Semanticamente ele é anos luz a frente em termos de clareza de código, mas o do JPA2 parece mais robusto para alguma situação muito específica (talvez).

Fiz a mesma pergunta no fórum do hibernate, mas ninguém deus as caras para dar pitoco. Sei que o Gavin King puxa bastante o saco das JPA Criterias, então pergunto… É ruim ficar com as antigas, elas vão morrer?

https://forum.hibernate.org/viewtopic.php?f=1&t=1005778&p=2433416#p2433416

3 Respostas

LPJava

qual o seu provider na JPA?

partenon

Vamos por partes:

Acho que a pergunta correta seria: existe algum recurso que vc usa que existe no Hibernate mas nao em JPA2? Cada implementacao JPA possui extensoes. Isso diminuiu com JPA2, mas ainda existem coisas especificas para cada provedor. Por exemplo, existem varias anotacoes que so existem em Hibernate, que extendem as anotacoes JPA2.

Questao de gosto. Mas eu daria preferencia para JPA no lugar do Hibernate. Ja explico pq :slight_smile:

Nao. Se for, o pessoal vai colocar um grande aviso de “deprecated” :wink: E ate onde sei, eles nao estao nem discutindo isso.

Respondidas as perguntas, aqui vai a minha opiniao (que, ate onde sei, eh compartilhada pelos desenvolvedores do projeto): use JPA sempre que possivel. O JPA permite um “fall back” caso precise, ou seja, se precisar de algo exclusivo do Hibernate, voce pode sempre dar um em.getDelegate() e receber uma Session. Ou ainda, pode usar anotacoes especificas do Hibernate em entidades JPA. O motivo para dar preferencia ao JPA eh que seguir um padrao eh sempre melhor que seguir algo proprietario.

israel.fonseca

LPJava. Uso hibernate e não faço questão de mudar. :slight_smile:

partenon, concordo contigo na questão do ficar com o padronizado que é melhor. Meu grilo mesmo foi com a leitura do código para uma Criteria Query do JPA2, tipo não é intuitivo saca? Por mais robusto que seja. Acho que é uma perda quando tu sacrifica legibilidade no código. Mas isso é questão de gosto mesmo como falasse.

Minha dúvida era mais, hoje o que faria alguém usar Hibernate Criteria em vez de JPA Criteria. Quais os prós e contras? De cabeça penso em:

Favor Hibernate

  • Legibilidade
  • Example queries e variações

Favor JPA

  • Padronização
  • Alguma situação especifica que não sei citar exemplo

Acho que o Java ta muito bitolado com verificação estática de tipos, passei muito tempo programando em Java, depois fui programar em Python, agora voltei ao Java, e sinto que não é algo tão primordial essa constante de garantir tipos em tempo de compilação, acho que a simplicidade geral da coisa é bem mais válida. Tiro o QueryDSL como exemplo de algo bem intuitivo.

Mas de qualquer forma, valeu ai pelas opiniões, o fórum do hibernate é deserto! :lol:

Criado 22 de julho de 2010
Ultima resposta 23 de jul. de 2010
Respostas 3
Participantes 3