合并持久化单元
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 提供了类路径扫描持久单元后处理器它配置了一个基础包,并可选地采用映射文件名模式。然后扫描给定包中标注为@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>
从春季3.1开始,可以在LocalContainerEntityManagerFactoryBean直接用于启用实体类的类路径扫描。详情请参见Java文档。 |