Diferença entre Session e EntityManager do JPA?

6 respostas
G

Qual a diferença entre usar o Session do Hibernate e o EntityManager do JPA(utilizando a implementação do hibernate)?

6 Respostas

W

Se você utilizar EntityManager do JPA vai estar seguindo a especificação JPA. :smiley: O dia que precisar mudar de implementação, vai ser muito simples.

Além disso, o Hibernate costuma ter alguns recursos a mais. Outro ponto é que o Hibernate utiliza a Hibernate Query Language e uma API de Criteria diferente da padrão do JPA.

R

wagnerfrancisco:
Se você utilizar EntityManager do JPA vai estar seguindo a especificação JPA. :smiley: O dia que precisar mudar de implementação, vai ser muito simples.

Além disso, o Hibernate costuma ter alguns recursos a mais. Outro ponto é que o Hibernate utiliza a Hibernate Query Language e uma API de Criteria diferente da padrão do JPA.

Ou seja, se você usar SessionFactory, sua aplicação só vai rodar com Hibernate, se usar EntityManagerFactory, você vai poder usar o mesmo sistema em qualquer framework que siga a especificação JPA, como Top Link, Ibatis, Eclipse Link e próprio Hibernate é claro.

A API Criteria do Hibernate é muito boa.

H

romarcio:
Ou seja, se você usar SessionFactory, sua aplicação só vai rodar com Hibernate, se usar EntityManagerFactory, você vai poder usar o mesmo sistema em qualquer framework que siga a especificação JPA, como Top Link, Ibatis, Eclipse Link e próprio Hibernate é claro.
+1
Agora Ibatis… nunca tinha ouvido falar! O.O

G

Muito obrigado pelas respostas senhores, eu confesso que me sentia culpado por usar a especificação da JPA, pois tudo quanto era exemplo que eu via na internet era feito usando Session do Hibernate.

Abraços.

H

Uso o EntityManager e a API Criteria do Hibernate. Bão d+.

R

jakefrog:
romarcio:
Ou seja, se você usar SessionFactory, sua aplicação só vai rodar com Hibernate, se usar EntityManagerFactory, você vai poder usar o mesmo sistema em qualquer framework que siga a especificação JPA, como Top Link, Ibatis, Eclipse Link e próprio Hibernate é claro.
+1
Agora Ibatis… nunca tinha ouvido falar! O.O

Eu nunca usei o iBatis. Sei que era da Apache e depois passou para outro grupo que deu sequencia no projeto e é chamado de MyIBatis desde 2010 eu acho. Até não sei dizer se ele segue a especificação JPA 2, mas acredito que sim. No blog da loiane acho que tem um post sobre ele que ela fez uma vez.

Criado 21 de julho de 2012
Ultima resposta 21 de jul. de 2012
Respostas 6
Participantes 5