休眠的两个配置文件的目的是什么?

2022-08-31 16:56:52

这是我当前的项目结构:

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

我在两个文件( 和 ) 中都有非常相似的配置参数,这看起来很奇怪,但这是我在许多在线示例和教程中看到的。我不明白为什么我需要两个文件。是否可以只使用一个?请解释。hibernate.cfg.xmlpersistence.xml

例如,我应该在两个文件中声明,还是只声明一个就足够了?如果是这样,使用哪一个?hibernate.dialect


答案 1

如果您使用的是Hibernate的专有API,则需要.如果您使用的是 JPA,即 Hibernate EntityManager,则需要 .hibernate.cfg.xmlpersistence.xml

因此,您通常不需要两者,因为您使用Hibernate专有API或JPA。

但是,如果您使用的是Hibernate专有API并且已经拥有(和XML映射文件)但想要开始使用JPA,则可以通过在属性中引用来重用现有的配置文件 - 因此拥有这两个文件。重用现有文件是IMO的一个现实场景,可以证明保留两者都是合理的(即使从长远来看,我可能会迁移到JPA注释)。hibernate.cfg.xmlhbm.xmlhibernate.cfg.xmlpersistence.xmlhibernate.ejb.cfgfilehbm.xml

引用


答案 2

hibernate.cfg.xml用于休眠; 适用于 JPA。persistence.xml

如果你在没有JPA的情况下进行休眠,你不需要后者。

如果你做JPA,你必须有一个提供者实现,这意味着Hibernate,EclipseLink等(可能还有其他合法的JPA实现,但我现在没有时间检查。


推荐