Spring - два постоянных модуля с разными провайдерами JPA

Возможно ли иметь два постоянных модуля: один с Hibernate для работы с некоторыми объектами, а другой с EclipseLink для работы с другими объектами в среде Spring?

1 ответ

Следующее должно работать:

<bean id="schema1EM" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
  ...
  <property name="jpaVendorAdapter">
    <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
      ...
    </bean>
  </property>
  <property name="packagesToScan" value="org.example.domain.schema1"/>
</bean>

<bean id="schema2EM" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
  ...
  <property name="jpaVendorAdapter">
    <bean class="org.springframework.orm.jpa.vendor.EclipseLinkJpaVendorAdapter">
      ...
    </bean>
  </property>
  <property name="packagesToScan" value="org.example.domain.schema2"/>
</bean>

<jpa:repositories base-package="org.example.data.schema1" entity-manager-factory-ref="schema1EM"/>
<jpa:repositories base-package="org.example.data.schema2" entity-manager-factory-ref="schema2EM"/>

schema1EM будет назначен всем репозиториям, заявленным в пакете org.example.data.schema1 а также schema2EM будет назначен тем, кто в org.example.data.schema2, Вам нужно будет разделить классы домена и интерфейсы репозитория по пакетам, чтобы работала автоматическая разводка Spring.

Другие вопросы по тегам