合并持久化单元

Spring 支持多个持久化单元。不过,有时你可能想模块化你的应用,但仍确保所有这些模块运行在同一个持久化单元中。为了实现这种行为,Spring Data JPA 提供了PersistenceUnitManager实现了根据持久化单元名称自动合并的实现,如下示例所示:spring-doc.cadn.net.cn

例子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配置。后处理器必须配置如下:spring-doc.cadn.net.cn

例子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文档