1)使用不同的名称在中创建几个持久单元。persistence.xml
2) 创建必要数量的 s(每个持久性单元 1 个),并指定具体工厂应使用哪个持久性单元:EntityManagerFactory
<bean id="authEntityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
<property name="persistenceUnitName" value="SpringSecurityManager"/>
</bean>
3) 创建必要数量的 s: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)如果你在你的web.xml,那么在其初始化参数名称中指定必要的EntityManagerFactory(或者使用相应的初始化块创建几个过滤器):OpenEntityManagerInViewFilter
<init-param>
<param-name>entityManagerFactoryBeanName</param-name>
<param-value>authEntityManagerFactory</param-value>
</init-param>