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