Nutzen hibernate sessionFactory oder JPA entityManager?

Arbeite ich an einem Projekt mit Hibernate 4.1, Spring 3.1, und JPA 2.0, und ich möchte, um zu überprüfen, dass das, was habe ich zusammengetragen aus dem internet, der richtige ist.

Ich versuche zu entscheiden, ob es sich um einen JPA entityManager oder die hibernate-spezifische sessionFactory.

Zuerst habe ich geplant, entityManager und vollständige JPA-Spezifikationen, so dass mein Projekt wäre, entkoppelt aus dem Ruhezustand, und ich konnte es wechseln sich für etwas anderes, sagen EclipseLink, wenn der Lust hat mich oder etwas, das mich davon überzeugt später auf.

Allerdings scheint es, dass der entityManager hat einige sehr wichtige Einschränkungen.

Meine Fragen:

Der einzige Grund, ich würde wollen, verwenden Sie die vollständige JPA-Spezifikationen und den entityManager zu können, schalten Sie den Ruhezustand für eine andere JPA-2.0-kompatibel ORM relativ leicht, Recht? Gibt es wirklich keine performance /Funktionalität /einfache Programmierung Vorteile mit den entityManager?

Zweiten, wie es scheint, die hibernate sessionFactory hat eine Menge Vorteile, die über den entityManager. Bisher habe ich laufen in das Problem, dass der entityManager kann nicht führen Sie eine Batchdatei einfügen einer Liste von Entitäten, die ich gelesen habe die sessionFactory kann. Ich habe auch gelesen, dass die sessionFactory kann sich wieder ein auto-generierte entity-ID automatisch, während mit dem entityManager Sie brauchen, um die Transaktion zu beenden /Spülen Sie den Persistenz-Kontext-ziehen Sie die neu erzeugte id.

Ich mochte die Idee, mein Projekt ist relativ entkoppelt von Hibernate, aber ich würde viel eher in der Lage zu schreiben, effiziente Datenbank-updates aus der get-go. Also ich sollte Umschalten, um mein Projekt konfiguriert wird für den Ruhezustand und die sessionFactory, richtig?

Die folgende Antwort deutet mit entityManager - und Auspacken es zu einer sessionFactory wenn Sie spezifische Anforderungen haben,... stackoverflow.com/questions/5640778/... Dies scheint ein wenig seltsam, aber entweder Sie wollen stick mit standards und verwenden nur entityManager oder Sie wissen, dass Sie lieber Hibernate-spezifische features und verwenden sessionFactory nur...
Ja, das ist eine gute Idee. Ich nehme an, müsste jemand erwähnt das es in diesem thread, wenn es ein Problem mit es zu tun auf diese Weise. Ausserdem wollte ich herausfinden, ein Weg, in dem der entityManager zu sein scheint schöner. Es hat TypedQuery, die ich glaube nicht, dass Sie verwenden können, mit der Sitzung.
Coray, was hast du am Ende mit ? Gibt es wirklich keine performance-Vorteile des einen über den anderen ?
Ich habe ein paar Projekte, die jetzt. Ich habe hauptsächlich den JPA entityManager, aber ich glaube trotzdem nicht, dass es irgendeinen praktischen Grund, dies zu tun. Ich bin mehr gewohnt, dass jetzt, obwohl, und ich glaube nicht, dass es einen großen Unterschied macht (es sei denn, Sie wirklich brauchen, um batch-insert-Dinge!) Was ich eigentlich bevorzuge, ist die Verwendung von Spring Data nun. Es vereinfacht die Dinge, eine Menge über die beiden anderen Optionen.

InformationsquelleAutor CorayThan | 2013-01-30

Schreibe einen Kommentar