Diferença entre Session e EntityManager do JPA?

6 respostas
ganondorfan

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

6 Respostas

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.

romarcio

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.

Hebert_Coelho

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

ganondorfan

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.

Henrique.tenorio

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

romarcio

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