Seam - 多个持久性单元

时间:2010-06-24 03:20:48

标签: java java-ee seam persistence-unit

Seam是否支持其配置中的多个持久性单元?此外,您何时想拥有或需要多个持久性单元?

我正在研究一个通用组件,现在它只支持一个对我有意义的持久性单元,因为我从未在每个Web应用程序中使用超过1个持久性单元。因此,我很难看到您将使用多个持久性单元的位置。

谢谢,

沃尔特

2 个答案:

答案 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个持久性单元。