Diferença entre Session e EntityManager do JPA?

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

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.

[quote=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.[/quote]

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.

1 curtida

[quote=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.[/quote] +1
Agora Ibatis… nunca tinha ouvido falar! O.O

1 curtida

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.

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

[quote=jakefrog][quote=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.[/quote] +1
Agora Ibatis… nunca tinha ouvido falar! O.O[/quote]

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.