Я работаю над проектом, который использует Hibernate 4.1, Spring 3.1 и JPA 2.0, и я хочу проверить, что то, что я почерпнул из Интернета, является правильным.
Я пытаюсь решить, использовать ли сущностьManager JPA или сессионную среду, зависящую от гибернации.
Сначала я планировал использовать сущностьManager и полные спецификации JPA, поэтому мой проект будет отделен от Hibernate, и я мог бы переключить его на что-то еще, скажем, EclipseLink, если это меня увлекло, или что-то в этом убедили позже.
Однако, кажется, что у entityManager есть некоторые очень существенные ограничения.
Мои вопросы:
Единственная причина, по которой я хочу использовать полные спецификации JPA, и entityManager должен иметь возможность легко отключать Hibernate для другой ORM, совместимой с JPA 2.0, правильно? Неужели нет производительности/функциональности/удобства программирования при использовании entityManager?
Во-вторых, похоже, что спящий режим sessionFactory имеет много преимуществ над entityManager. До сих пор я столкнулся с проблемой, что entityManager не может выполнить пакетную вставку списка объектов, которые я прочитал в файле sessionFactory. Я также прочитал, что sessionFactory автоматически возвращает автоматически сгенерированный идентификатор объекта, в то время как с помощью entityManager вам необходимо завершить транзакцию/очистить контекст персистентности, чтобы вытащить вновь сгенерированный идентификатор.
Мне понравилась идея, что мой проект относительно отделен от Hibernate, но я бы скорее смог написать эффективные обновления баз данных с самого начала. Поэтому я должен переключиться на мой проект, настроенный для спящего режима и sessionFactory, правильно?