合并持久化单元
Spring 支持拥有多个持久化单元。然而,有时您可能想要模块化您的应用程序,但仍确保所有这些模块都在单个持久化单元中运行。为了启用该行为,Spring Data JPA 提供了一个 PersistenceUnitManager
实现,该实现自动基于其名称合并持久化单元,如下例所示
示例 1. 使用 MergingPersistenceUnitmanager
<bean class="….LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitManager">
<bean class="….MergingPersistenceUnitManager" />
</property>
</bean>
用于 @Entity 类和 JPA 映射文件的类路径扫描
一个普通的 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 上直接配置要扫描的包,以启用实体类的类路径扫描。有关详细信息,请参阅 JavaDoc。 |