2010-11-21 19 views
1

J'utilise Hibernate pour mapper des objets à des entités et j'ai commencé à utiliser un Entity Manager. Cela peut être une question stupide, mais quelle est la raison de l'utilisation du gestionnaire d'entité? Auparavant, j'aurais utilisé une HibernateSessionFactory pour obtenir une session et ensuite utiliser cette session pour tirer/pousser des données.Pourquoi utiliser un gestionnaire d'entités?

Répondre

4

Parce que le EntityManager fait partie de la norme JPA. Théoriquement, vous pouvez changer d'implémentation (Hibernate, EclipseLink, OpenJPA) si vous en avez besoin. Mis à part la prétendue portabilité, il n'y a pas une si grande différence entre les deux. Hibernate implémente la norme JPA. En fait, le EntityManager a un délégué, basé sur la mise en œuvre concrète. Pour Hibernate, le délégué est le Session. Si vous appelez getDelegate() il retournera le courant Session.

J'ai toujours utilisé Hibernate avec JPA (EntityManager) et j'avais très rarement eu besoin d'obtenir la Session.

1

EntityManager est un concept de JPA. Vous n'avez pas besoin d'utiliser JPA avec Hibernate du tout (en fait, si c'est JPA1, je vous suggère de ne pas).

1

Vous utilisez un EntityManager lorsque vous utilisez l'API JPA. L'implémentation Hibernate de EntityManager appelle en interne HibernateSessionFactory et gère les sessions Hibernate pour vous. EntityManagers dans JPA servent fondamentalement le même but que les sessions Hibernate.