gpt4 book ai didi

java - 使用 Spring 和 Hibernate 时是否需要 persistence.xml?

转载 作者:IT老高 更新时间:2023-10-28 13:46:47 24 4
gpt4 key购买 nike

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

那么 persistence.xml 还需要吗?

谢谢。

最佳答案

更新: 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,尽管这样的管理器不是开箱即用的。

关于java - 使用 Spring 和 Hibernate 时是否需要 persistence.xml?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4736301/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com