cuốn sách gpt4 ai đã làm

java - 'correct' 实例化JPA管理器bean的方法?

In lại Tác giả: Vũ trụ không gian 更新时间:2023-11-04 08:37:37 26 4
mua khóa gpt4 Nike

我正在使用 IBM RAD 开发一些 JPA 实体,并从中开发相应的 JPA Manager Bean。管理器 bean(由 RAD 生成)具有以下成员:

@PersistenceUnit
private EntityManagerFactory emf;

我不确定如何从无状态 EJB (3.0) 正确实例化(或获取对此管理器 bean 的引用),因此我向管理器 bean 添加了一个构造函数,可以将 EntityManagerFactory 实例传递给它。我通过使用“@PersistenceUnit”注释在 EJB 中获取对 EntityManagerFactory 的引用,如下所示:

@PersistenceUnit
private EntityManagerFactory _entityManagerFactory;

这似乎没有必要,我相信必须有一种方法来告诉容器(在我的例子中是 Websphere 7.0)以某种方式为我“引导”它,以便我立即获得对 JPA 管理器 bean 的引用。是吗?

gia hạn:看来我说的还不够详细。对此感到抱歉。

  • 涉及三个对象:JPA 实体、JPA 实体管理器和无状态 EJB。
  • JPA 实体管理器类(不是 EJB)由 RAD 创建,并具有方便的方法(命名查询)。它还定义了成员@PersistenceUnit private EntityManagerFactory emf。我知道我可以直接使用 Trình quản lý thực thể,但我想使用 MyEntityManager,因为它的方法很方便。
  • 我可以通过使用上述注释(也像 Bozho 建议的那样)在无状态 EJB 中获取对 EntityManager 或 EntityManagerFactory 的引用
  • 我想在无状态 EJB 中获取对 JPA 实体管理器的引用。如果我“新建”它(new MyEntityManager()),则 emf 字段为空。解决方法是在 EJB 中声明 @PersistenceUnit 字段,然后将其传递给 JPA 实体管理器并使用它。
  • 想一想,也许我可以将 JPA 实体管理器声明为 EJB 并完成它......(尽管这又似乎没有必要)。我认为有一个类似于 PersistenceContext.getJpaManager(MyEntityManager.class) 的方法,我可能缺少它。

câu trả lời hay nhất

@PersistenceContext
private EntityManager em;

看来您有自定义bean,您想将其注入(inject)其他bean(它至少需要一个本地接口(interface)):

@EJB
private MyEntityManager em;

关于java - 'correct' 实例化JPA管理器bean的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6018661/

26 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress