Hibernate SessionFactory vs. EntityManagerFactory
Ich bin neu in Hibernate und bin unklar, ob eine SessionFactory
oder EntityManagerFactory
erhalten Sie die hibernate-session. Was ist der Unterschied zwischen den beiden? Vorteile & Nachteile?
InformationsquelleAutor der Frage elpisu | 2011-04-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Lieber
EntityManagerFactory
undEntityManager
. Sie sind definiert durch den JPA-standard.SessionFactory
undSession
sind hibernate-spezifisch. DieEntityManager
ruft die hibernate-session unter der Haube. Und wenn Sie einige spezielle Funktionen, die nicht verfügbar sind in derEntityManager
erhalten Sie die Sitzung, indem Sie:InformationsquelleAutor der Antwort Bozho
Möchte ich hinzufügen, dass auf das, was Sie auch bekommen können, Hibernate die session durch Aufruf
getDelegate()
Methode vonEntityManager
.ex:
InformationsquelleAutor der Antwort toytoy
Verwendung von EntityManagerFactory Ansatz erlaubt die Verwendung von callback-Methode Annotationen wie @PrePersist, @PostPersist,@PreUpdate ohne zusätzliche Konfiguration.
Mit ähnlichen Rückrufe während der Verwendung von SessionFactory erfordert zusätzliche Anstrengungen.
Verwandte Hibernate docs finden hier und hier.
Verwandte SOF Frage und Spring Forum Diskussion
InformationsquelleAutor der Antwort Kumar Sambhav
Bevorzuge ich die JPA2
EntityManager
API überSessionFactory
weil es fühlt sich mehr modern. Ein einfaches Beispiel:JPA:
SessionFactory:
Ich denke, es ist klar, dass die erste sieht sauberer aus und ist auch einfacher zu testen, weil EntityManager kann leicht spotten.
InformationsquelleAutor der Antwort Bastian Voigt
Mittels EntityManager, der code ist nicht mehr eng gekoppelt mit hibernate. Aber für diese, in der Nutzung, die wir nutzen sollten :
statt
Ebenso für EntityManagerFactory, verwenden javax Schnittstelle. So, der code ist lose gekoppelt. Wenn es eine bessere JPA-2-Implementierung als Ruhezustand, das Umschalten sollte einfach sein. In einem extremen Fall, wir könnten den Typ-cast zu HibernateEntityManager.
InformationsquelleAutor der Antwort Sairam Krish