Hibernate的两个configuration文件的目的是什么?
这是我目前的项目结构:
pom.xml /src /main /resources hibernate.cfg.xml /META-INF persistence.xml
我在这两个文件( hibernate.cfg.xml
和persistence.xml
)中都有非常相似的configuration参数,这看起来很奇怪,但这是我在许多在线示例和教程中看到的。 我不明白为什么我需要有两个文件。 是否可以只与一个工作? 请解释。
PS。 例如,我应该在两个文件中声明hibernate.dialect
,还是只有一个就足够了? 如果是这样,哪一个使用?
如果您使用Hibernate的专有API,则需要使用hibernate.cfg.xml
。 如果您使用的是JPA,即Hibernate EntityManager,则需要使用persistence.xml
。
所以当你使用Hibernate专有的API或JPA时,你通常不需要这两者。
但是,如果您使用的是 Hibernate Proprietary API并且已经有hibernate.cfg.xml
(和hbm.xml
XML映射文件),但想要开始使用JPA,则可以通过引用hibernate.cfg.xml
来重用现有的configuration文件hibernate.ejb.cfgfile
属性中的persistence.xml
– 因此具有这两个文件。 重用现有的hbm.xml
文件是一个现实的场景,可以certificate保持两个(即使我可能迁移到JPA批注长期)。
参考
- Hibernate EntityManager
- 2.2.2。 引导
hibernate.cfg.xml
是针对Hibernate的; persistence.xml
是用于JPA。
如果你没有JPA做Hibernate,你不需要后者。
如果你做JPA,你必须有一个提供者实现,这意味着Hibernate,EclipseLink等(可能有其他合法的JPA实现,但是我没有时间去检查)。