在使用Spring和Hibernate时,是否需要持久性.xml?
我正在使用Spring JPA和Hibernate的项目。持久性.xml中的大多数内容都可以在Spring applicationContext.xml文件中指定。
那么,持久性.xml不再需要了吗?
谢谢。
我正在使用Spring JPA和Hibernate的项目。持久性.xml中的大多数内容都可以在Spring applicationContext.xml文件中指定。
那么,持久性.xml不再需要了吗?
谢谢。
更新:Spring 3.1 将支持免 JPA 配置,请参阅 Spring 3.1 M2:配置增强功能。persistence.xml
darioo的答案适合实际使用,但在技术上是不正确的。
PersistenceProvider
有两种出厂方法:
EntityManagerFactory createEntityManagerFactory(String emName, Map map)
- 对于独立环境,将由持久性提供程序解析。persistence.xml
EntityManagerFactory createContainerEntityManagerFactory(PersistenceUnitInfo info, Map map)
- 对于应用程序服务器环境,由应用程序服务器解析,其内容作为 传递。persistence.xml
PersistenceUnitInfo
Spring's模拟了应用服务器环境。因此,它分析自身,将其内容与应用程序上下文中的值合并,并使用第二个工厂方法将其传递给持久性提供程序。LocalContainerEntityManagerFactoryBean
persistence.xml
但是,获取数据的过程是可配置的:persistence.xml
您可以使用属性配置文件名 - 避免与应用程序服务器的缺省 JPA 初始化策略发生冲突非常有用。persistence.xml
persistenceXmlLocation
您可以通过设置自定义策略来完全覆盖 的来源。PersistenceUnitInfo
PersistenceUnitManager
因此,实际上您可以在Spring中配置JPA而无需编写自定义,尽管这样的管理器不是开箱即用的。persistence.xml
PersistenceUnitManager
persistence.xml
当您通过JPA使用Hibernate时,即使您使用的是Spring JPA,也需要。如果您直接使用Hibernate,则不需要。persistence.xml