Seam是否支持其配置中的多个持久性单元?此外,您何时想拥有或需要多个持久性单元?
我正在研究一个通用组件,现在它只支持一个对我有意义的持久性单元,因为我从未在每个Web应用程序中使用超过1个持久性单元。因此,我很难看到您将使用多个持久性单元的位置。
谢谢,
沃尔特
答案 0 :(得分:1)
Seam在其配置中是否支持多个持久性单元?
我不明白为什么不会。配置多个持久性单元并按名称注入它们:
@PersistenceContext(unitName="UNITNAME")
private EntityManager em;
此外,您何时想拥有或需要多个持久性单元?
如果您需要访问多个数据源。
答案 1 :(得分:0)
在JPA和带有Seam的JPA中拥有多个持久性单元是非常有可能的。在Seam中,这很容易。只需在persistence.xml中创建多个<persistence-unit name="myapp" />
元素,并为每个单元配置EntityManagerFactory,并为每个EntityManagerFactory配置一个EntityManager。然后,您可以以标准方式简单地注入任何EntityManager:
@In
EntityManager entityManagerOne;
您的EntityManager名为entityManagerOne
(另一个entityManagerTwo
)。
拥有多个持久性单元的最重要原因是需要使用多个数据库系统。这与数据源无关,但问题只是为实体映射定义范围。
另一个原因是您为每个persitence单元选择了一个事务策略(全局(JTA)或本地(资源本地))。因此,如果您需要使用多个事务策略,则可以为同一个数据库创建2个持久性单元。