2010-11-21 1 views
1

Ich verwende Hibernate, um Objekte Objekten zuzuordnen, und ich habe begonnen, einen Entity Manager zu verwenden. Dies könnte eine dumme Frage sein, aber was ist eigentlich der Grund für die Verwendung des Entity Managers? Zuvor hätte ich eine HibernateSessionFactory verwendet, um eine Sitzung abzurufen und dann diese Sitzung zum Ziehen/Verschieben von Daten zu verwenden.Warum einen Entity Manager verwenden?

Antwort

4

Da die EntityManager Teil des Standards ist - JPA. Theoretisch können Sie Implementierungen (Hibernate, EclipseLink, OpenJPA) bei Bedarf wechseln. Abgesehen von der angeblichen Portabilität gibt es keinen so großen Unterschied zwischen den beiden.

Hibernate implementiert den JPA-Standard. In der Tat hat die EntityManager einen Delegierten, basierend auf der konkreten Implementierung. Für Hibernate ist der Delegat die Session. Wenn Sie getDelegate() aufrufen, wird der aktuelle Session zurückgegeben.

Ich habe immer Hibernate mit JPA (EntityManager) verwendet und hatte sehr selten die Notwendigkeit, die Sitzung zu erhalten.

1

EntityManager ist ein Konzept von JPA. Sie müssen JPA mit Hibernate überhaupt nicht verwenden (in der Tat, wenn es JPA1 ist, würde ich vorschlagen, dass Sie nicht).

1

Sie verwenden einen EntityManager, wenn Sie die JPA-API verwenden. Hibernate-Implementierung von EntityManager ruft intern HibernateSessionFactory auf und verwaltet Hibernate-Sitzungen für Sie.

EntityManagers in JPA dienen grundsätzlich dem gleichen Zweck wie Hibernate-Sitzungen.