此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Data JPA 3.4.0! |
合并持久化单元
Spring 支持具有多个持久化单元。但是,有时您可能希望模块化应用程序,但仍要确保所有这些模块在单个持久化单元中运行。为了实现该行为,Spring Data JPA 提供了一个PersistenceUnitManager
根据 Persistence 单元的名称自动合并 Persistence 单元的实现,如以下示例所示:
示例 1.使用 MergingPersistenceUnitmanager
<bean class="….LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitManager">
<bean class="….MergingPersistenceUnitManager" />
</property>
</bean>
@Entity 类和 JPA 映射文件的类路径扫描
普通 JPA 设置要求所有注释映射的实体类都列在orm.xml
.这同样适用于 XML 映射文件。Spring Data JPA 提供了一个ClasspathScanningPersistenceUnitPostProcessor
这将配置一个 Base Package,并可选择采用 Map filename pattern。然后,它会扫描给定的包中带有@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。 |