Разница между сеансом 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);