Какова цель двух конфигурационных файлов для Hibernate? - PullRequest
51 голосов
/ 28 сентября 2010

Это моя текущая структура проекта:

pom.xml
/src
  /main
    /resources
      hibernate.cfg.xml
      /META-INF
        persistence.xml

У меня очень похожие параметры конфигурации в обоих файлах (hibernate.cfg.xml и persistence.xml), что выглядит странно, но это то, что я видел во многих онлайн-примерах и руководствах. Я не могу понять, почему мне нужно иметь два файла. Можно ли работать только с одним? Пожалуйста, объясните.

пс. Например, я должен объявить hibernate.dialect в обоих файлах, или достаточно одного? Если да, какой использовать?

Ответы [ 2 ]

68 голосов
/ 28 сентября 2010

Если вы используете собственный API Hibernate, вам понадобится hibernate.cfg.xml.Если вы используете JPA, т.е. Hibernate EntityManager, вам понадобится persistence.xml.

Таким образом, вам, как правило, не нужны оба, так как вы используете либо проприетарный API Hibernate или JPA.

Однако, если вы использовали Hibernate ProprietaryAPI и уже имеют hibernate.cfg.xmlhbm.xml файлы сопоставления XML), но если вы хотите начать использовать JPA, вы можете повторно использовать существующие файлы конфигурации, ссылаясь на hibernate.cfg.xml в persistence.xml в свойстве hibernate.ejb.cfgfile - иТаким образом, есть оба файла.Повторное использование существующих файлов hbm.xml является IMO реалистичным сценарием, который может оправдать сохранение обоих (даже если бы я, вероятно, перешел на аннотации JPA в долгосрочной перспективе).

Ссылки

17 голосов
/ 28 сентября 2010

hibernate.cfg.xml для Hibernate;persistence.xml для JPA.

Если вы используете Hibernate без JPA, последний вам не нужен.

Если вы используете JPA, вам нужна реализация провайдера, что означает Hibernate, EclipseLink и т. Д.может быть другие законные реализации JPA, но у меня нет времени, чтобы проверить прямо сейчас.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...