跳到主要内容
版本:4.1.1

合并持久化单元

Doubao 中英对照 Merging persistence units

Spring 支持使用多个持久化单元。但有时,您可能希望将应用程序模块化,同时又确保所有这些模块都运行在同一个持久化单元中。为启用这种行为,Spring Data JPA 提供了一个 PersistenceUnitManager 实现,它会根据持久化单元的名称自动合并持久化单元,如下例所示:

示例 1. 使用 MergingPersistenceUnitManager

<bean class="….LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitManager">
<bean class="….MergingPersistenceUnitManager" />
</property>
</bean>

针对 @Entity 类和 JPA 映射文件的 classpath 扫描​

一个普通的 JPA 配置要求所有注解映射的实体类都列在 orm.xml 中,XML 映射文件同样如此。Spring Data JPA 提供了一个 ClasspathScanningPersistenceUnitPostProcessor,它可配置一个基础包,并可选地指定一个映射文件名模式。随后它会扫描给定包中带有 @Entity 或 @MappedSuperclass 注解的类,加载与文件名模式匹配的配置文件,并将它们交给 JPA 配置。该后处理器必须按如下方式配置:

示例 2. 使用 ClasspathScanningPersistenceUnitPostProcessor

<bean class="….LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitPostProcessors">
<list>
<bean class="org.springframework.data.jpa.support.ClasspathScanningPersistenceUnitPostProcessor">
<constructor-arg value="com.acme.domain" />
<property name="mappingFileNamePattern" value="**/*Mapping.xml" />
</bean>
</list>
</property>
</bean>
备注

自 Spring 3.1 起,可以直接在 LocalContainerEntityManagerFactoryBean 上配置要扫描的包,从而启用针对实体类的 classpath 扫描。有关详细信息,请参阅 JavaDoc。