314 votes

Hibernate SessionFactory vs. JPA EntityManagerFactory

Je suis novice dans l'utilisation d'Hibernate et je ne sais pas s'il faut utiliser un fichier Hibernate. SessionFactory ou une JPA EntityManagerFactory pour créer un fichier Hibernate Session .

Quelle est la différence entre les deux ? Quels sont les avantages et les inconvénients de l'utilisation de chacun d'eux ?

6 votes

Cette réponse sur une question dupliquée est vraiment bonne. stackoverflow.com/questions/23445830/

3voto

Segun Emmanuel Points 41

EntityManagerFactory est l'implémentation standard, elle est la même dans toutes les implémentations. Si vous migrez votre ORM vers un autre fournisseur comme EclipseLink, il n'y aura aucun changement dans l'approche de la gestion de la transaction. En revanche, si vous utilisez la fabrique de session d'Hibernate, elle est liée aux API d'Hibernate et ne peut pas migrer vers un nouveau fournisseur.

2voto

Sairam Krish Points 493

En utilisant EntityManager, le code n'est plus étroitement couplé à Hibernate. Mais pour cela, dans l'usage, nous devrions utiliser :

javax.persistence.EntityManager

au lieu de

org.hibernate.ejb.HibernateEntityManager

De même, pour EntityManagerFactory, utilisez l'interface javax. De cette façon, le code est faiblement couplé. S'il existe une meilleure implémentation de JPA 2 qu'Hibernate, le changement serait facile. Dans un cas extrême, nous pourrions effectuer un typage vers HibernateEntityManager.

0voto

Avvappa Hegadyal Points 250

L'interface EntityManager est similaire à sessionFactory dans Hibernate. EntityManager fait partie du paquet javax.persistance mais session et sessionFactory font partie du paquet org.hibernate.Session/sessionFactory.

Le gestionnaire d'entités est spécifique à JPA et la session/sessionFactory est spécifique à Hibernate.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X