【问题标题】:Is persistence.xml requied when working with Spring and Hibernate?使用 Spring 和 Hibernate 时是否需要 persistence.xml?
【发布时间】:2011-06-11 19:12:23
【问题描述】:

我正在使用带有 Spring JPA 和 Hibernate 的项目。 persistence.xml 中的大部分内容都可以在 Spring applicationContext.xml 文件中指定。

那么 persistence.xml 还需要吗?

谢谢。

【问题讨论】:

    标签: java hibernate spring jpa


    【解决方案1】:

    更新: Spring 3.1 将支持persistence.xml-free JPA 配置,请参阅Spring 3.1 M2: Configuration Enhancements


    darioo 的回答适合实际使用,但在技术上并不正确。

    PersistenceProvider 有两个工厂方法:

    • EntityManagerFactory createEntityManagerFactory(String emName, Map map) - 对于独立环境,persistence.xml 将由持久性提供程序解析。

    • EntityManagerFactory createContainerEntityManagerFactory(PersistenceUnitInfo info, Map map) - 对于应用服务器环境,persistence.xml 被应用服务器解析,其内容作为PersistenceUnitInfo 传递。

    Spring 的LocalContainerEntityManagerFactoryBean 模拟应用服务器环境。因此它会解析persistence.xml 本身,将其内容与应用程序上下文中的值合并,并使用第二种工厂方法将其传递给持久性提供程序。

    但是,获取persistence.xml数据的过程是可配置的:

    • 您可以使用persistenceXmlLocation 属性配置persistence.xml 文件的名称 - 这有助于避免与应用服务器的默认 JPA 初始化策略发生冲突。

    • 您可以通过设置自定义PersistenceUnitManager 策略来完全覆盖PersistenceUnitInfo 的来源。

    因此,实际上您可以通过编写自定义 PersistenceUnitManager 在 Spring 中配置 JPA 而无需 persistence.xml,尽管这样的管理器不可用。

    【讨论】:

    • 一个非常好的答案,如果我没有用完今天的所有选票,我会投票给你。我认为 OP 不会费心在 Spring 内部进行挖掘,因为它似乎没有必要并且有些复杂。
    【解决方案2】:

    persistence.xml 在您通过 JPA 使用 Hibernate 时是必需的,即使您使用的是 Spring JPA。如果您直接使用 Hibernate,则不需要 persistence.xml

    【讨论】:

    • 为什么以 Hibernate 作为 JPA 提供者的 Spring JPA 需要 persistence.xml 文件?
    【解决方案3】:

    JPA 规范没有说明需要该文件的任何地方,但在 EntityManagerFactory 和 EntityManager 的合同定义中以及实际上在整个规范中,都反复提到了 persistence.xml 文件。

    我最近不得不处理这样一个问题,即是否可以在完全不使用 persistence.xml 的情况下以编程方式配置 JPA 2.0 和 Hibernate 3.6。

    我的结论是这是不可能的,尽管您可以将文件配置为包含非常小的配置。我确定该文件必须至少包含您的持久性单元的名称。其余信息可以通过编程方式作为参数提供给实体管理器工厂。

    虽然我从未使用过spring,因此我不知道它是否使用任何技巧来克服这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-26
      • 1970-01-01
      • 1970-01-01
      • 2015-10-08
      • 1970-01-01
      • 2018-06-08
      • 2013-01-17
      • 2017-11-20
      相关资源
      最近更新 更多