Разница между сеансом Hibernate и EntityManager
В чем разница между классом Hibernate Session
и классом EntityManager
? Я знаю, что EntityManager
реализует Java Persistence API, но я не уверен, каково его отношение с Session
. Связаны ли они вообще?
Ответы
Ответ 1
Session
- это API-интерфейс с гибернацией, EntityManager
- стандартизованный API для JPA. Вы можете придумать EntityManager
как класс адаптера, который обертывает Session
(вы даже можете получить объект Session
из объекта EntityManager
с помощью функции getDelegate()
).
Это не отличается от других API Java (например, JDBC является стандартным API, каждый поставщик адаптирует свой продукт к API через драйвер, который реализует стандартные функции).
Ответ 2
SessionFactory и Session имеют спящий режим. EntityManager вызывает сессию hibernate под капотом. И если вам нужны определенные функции, недоступные в EntityManager, вы можете получить сеанс, вызвав:
Session session = entityManager.unwrap(Session.class);