Какова цель двух файлов конфигурации для Hibernate?
Это моя текущая структура проекта:
pom.xml
/src
/main
/resources
hibernate.cfg.xml
/META-INF
persistence.xml
У меня очень похожие параметры конфигурации в обоих файлах (hibernate.cfg.xml
и persistence.xml
), что выглядит странно, но это то, что я видел во многих онлайн-примерах и учебниках. Я не могу понять, почему мне нужно иметь два файла. Можно ли работать с одним? Пожалуйста, объясните.
пс. Например, следует ли объявлять hibernate.dialect
в обоих файлах, или одного достаточно? Если да, то какой из них использовать?
Ответы
Ответ 1
Если вы используете API-интерфейс Hibernate, вам понадобится hibernate.cfg.xml
. Если вы используете JPA i.e Hibernate EntityManager, вам понадобится persistence.xml
.
Таким образом, вам вообще не нужны оба, поскольку вы используете или Hibernate API или JPA.
Однако, если вы использовали Hibernate Proprietary API и уже имеете файлы сопоставления hibernate.cfg.xml
(и hbm.xml
XML), но хотите начать использовать JPA, вы можете повторно использовать существующие файлы конфигурации на ссылаясь на hibernate.cfg.xml
в persistence.xml
в свойстве hibernate.ejb.cfgfile
- и, следовательно, имеет оба файла. Повторное использование существующих файлов hbm.xml
- это ИМО реалистичный сценарий, который может оправдывать сохранение обоих (даже если я, вероятно, перейду на аннотации JPA в конечном итоге).
Ссылки
Ответ 2
hibernate.cfg.xml
для спящего режима; persistence.xml
для JPA.
Если вы делаете Hibernate без JPA, вам не нужен последний.
Если вы делаете JPA, у вас должна быть реализация поставщика, что означает Hibernate, EclipseLink и т.д. (Возможно, существуют и другие законные реализации JPA, но у меня нет времени проверить прямо сейчас.)