1) Создайте несколько постоянных единиц в вашем persistence.xml
с разными именами.
2) Создайте необходимое число EntityManagerFactory
с (1 на единицу персистентности) и укажите, какую единицу постоянства следует использовать для бетонного завода:
<bean id="authEntityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
<property name="persistenceUnitName" value="SpringSecurityManager"/>
</bean>
3) Создайте необходимое количество TransactionManager
с:
<bean id="authTransactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="authEntityManagerFactory" />
</bean>
4) В ваших классах DAO укажите, с каким постоянным модулем (и, следовательно, с каким EntityManagerFactory) вы хотите работать:
public class AbstractAuthDao<T> {
@PersistenceContext (unitName = "SpringSecurityManager")
protected EntityManager em;
...
}
5) В ваших сервис-объектах укажите, какой TransactionManager следует использовать (эта функция поддерживается только в Spring 3.0):
@Transactional (value = "authTransactionManager", readOnly = true)
public class UserServiceImpl implements UserService {
...
}
6) Если у вас есть OpenEntityManagerInViewFilter
в вашем web.xml, то укажите в его init-param имя необходимого EntityManagerFactory (или создайте несколько фильтров с соответствующими init-блоками):
<init-param>
<param-name>entityManagerFactoryBeanName</param-name>
<param-value>authEntityManagerFactory</param-value>
</init-param>