【问题标题】:what is the purpose of two config files for Hibernate?Hibernate 的两个配置文件的目的是什么?
【发布时间】:2011-04-17 23:24:33
【问题描述】:

这是我目前的项目结构:

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

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

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

【问题讨论】:

    标签: java hibernate maven-2


    【解决方案1】:

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

    如果您在没有 JPA 的情况下使用 Hibernate,则不需要后者。

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

    【讨论】:

    • 我必须在两个文件中复制参数?
    【解决方案2】:

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

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

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

    参考文献

    【讨论】:

    • 感谢您的解释。我也在使用hibernate3:hbm2ddl,我认为它需要hibernate.cfg.xml,对吧?而且我觉得它不知道如何使用persistence.xml。我对吗?在这种情况下我需要两个文件? (我只与 JPA 合作)
    • @Vincenzo 根据this articlehibernate3:hbm2ddl 可以与jpaconfigurationpersistence.xml 一起使用。所以不,你不需要hibernate.cfg.xml
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-28
    • 2016-03-19
    • 1970-01-01
    相关资源
    最近更新 更多