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

时间:2010-09-27 20:18:03

标签: java hibernate maven-2

这是我目前的项目结构:

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

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

PS。例如,我应该在两个文件中声明hibernate.dialect,还是仅仅一个就足够了?如果是的话,使用哪一个?

2 个答案:

答案 0 :(得分:67)

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

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

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

参考

答案 1 :(得分:16)

hibernate.cfg.xml适用于Hibernate; persistence.xml适用于JPA。

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

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