Merging persistence units

Spring 支持使用多个持久化单元。但是,有时您可能希望对您的应用程序进行模块化,但仍确保所有这些模块都运行在单个持久化单元内。为了实现该行为,Spring Data JPA 提供了一个 PersistenceUnitManager 实现,该实现基于其名称自动合并持久化单元,如下例所示: .Using MergingPersistenceUnitmanager

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

Classpath Scanning for @Entity Classes and JPA Mapping Files

纯 JPA 设置要求所有注释映射的实体类都列在 orm.xml 中。同样也适用于 XML 映射文件。Spring Data JPA 提供了一个 ClasspathScanningPersistenceUnitPostProcessor,它获取配置的基本包,并可以选取一个映射文件名模式。然后,它会扫描指定包中注释了 @Entity@MappedSuperclass 的类,加载与文件名模式匹配的配置文件,并将它们交给 JPA 配置。必须如下配置后置处理器:

Example 1. Using 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