Документация Hibernate EntityManager указывает, что:
Вы можете использовать комбинацию всех трех вместе, аннотации без JPA программные интерфейсы и жизненный цикл, или даже чистые родные Hibernate Core, в зависимости от деловых и технических потребностей вашего проекта. Вы можете на все время возвращаются к родным API Hibernate или, если требуется, даже для родной JDBC и SQL.
Код, который использует API JPA (EntityManager), явно более портативен (даже при случайных отказах от Hibernate Core).
Но были ли у меня какие-то преимущества при использовании исключительно Hibernate Core? Интересно, если модель JPA 2 действительно подходит на вершине Hibernate Core без каких-либо противоречий? IOW, является ли резервное копирование Core всегда легким и без проблем?
Моя главная проблема заключается в следующем:
Возможно, отличия не только в API, но и в базовой семантике?! (например, различные конфликты между транзакциями/версией/блокировкой, которые могут конфликтовать: пессимистическая блокировка упоминается в документации Core, но не в документации EntityManager - так что я могу использовать пессимистическую блокировку, возвращаясь к Core без каких-либо проблем?.)