Можно ли использовать Hibernate с JPA без аннотаций JPA на модели?
Да, это вполне возможно. Вы можете указать все соответствующие атрибуты классов вашей объектной модели в стандартном файле отображения JPA - orm.xml
. Вы также можете иметь свои собственные файлы сопоставления, но вам нужно будет указать их в persistence.xml
.
Если нет, то могут ли мои EJB вести себя транзакционно с Hibernate? Я думаю, что это называется поддержкой JTA, но не уверен.
Если вы используете EJB, вы найдете транзакции, управляемые контейнером, весьма полезными. Все, что вам нужно сделать, это аннотировать ваши EJB-компоненты с необходимыми аннотациями @TransactionManagement
и @TransactionAttribute
, и контейнер будет автоматически управлять транзакциями для вас, включая фиксацию транзакции на конец метода (если применимо) и откат транзакции в случае исключения времени выполнения или исключения приложения.
Все EntityManager
экземпляров, то есть все контексты персистентности, введенные в такие EJB, будут автоматически связаны с базовой транзакцией JTA. Обратите внимание, что это верно только в том случае, если вы разрешите контейнеру внедрять EntityManager
экземпляров. Если вы сами управляете контекстами персистентности (создавая их из EntityManagerFactory
экземпляров), то вам, возможно, придется вызвать EntityManager.joinTransaction()
, чтобы связать всю работу, выполненную в контексте персистентности, с основная транзакция JTA. Это необходимо, поскольку EntityManager
обычно ассоциируется с базовой транзакцией JTA, если вы настроили постоянный контекст для использования источников данных JTA. Если JTA-транзакция не существует, такая ассоциация не будет возникать, и поэтому вам придется присоединиться к активному JTA-переходу, если вы хотите сбросить изменения в базу данных.
Есть ли способ перехода от конфигурации отображения XML Hibernate к некоторому отображению XML JPA?
Я не знаю ни о каком таком инструменте, так как мне никогда не приходилось переносить проект, но это не значит, что нет никого, который мог бы служить этой цели. Возможно, вы захотите взглянуть на проект Hibernate Tools , который поддерживает JPA, хотя я не уверен, позволит ли он вам конвертировать из формата Hibernate XML в формат JPA.