gpt4 book ai didi

java - JPA2 示例嵌入式 Java EE 容器?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:02:24 25 4
gpt4 key购买 nike

我想为 JPA2 创建一些可以在 Java EE 容器内运行的示例代码。

运行这些示例通常需要一个 Java EE 服务器,但我想让事情变得更简单,并使用嵌入式容器 + maven 来运行它们。

这种“项目”用哪个比较好?

Glassfish 嵌入式,JBoss 微容器还是 OPENEJB?

其他?

谢谢!

最佳答案

在容器外测试 EJB 的问题是没有执行注入(inject)。我找到了这个解决方案。在无状态 session bean 中,您有一个注释 @PersistenceContext在独立的 Java-SE 环境中,您需要自己注入(inject)实体管理器,这可以在单元测试中完成。这是嵌入式服务器的快速替代方案。

@Stateless
public class TestBean implements TestBusiness {

@PersistenceContext(unitName = "puTest")
EntityManager entityManager = null;

public List method() {
Query query = entityManager.createQuery("select t FROM Table t");
return query.getResultList();
}
}

unittest 实例化 entitymanager 并将其“注入(inject)”到 bean 中。

public class TestBeanJUnit {

static EntityManager em = null;
static EntityTransaction tx = null;

static TestBean tb = null;
static EntityManagerFactory emf = null;

@BeforeClass
public static void init() throws Exception {
emf = Persistence.createEntityManagerFactory("puTest");
}

@Before
public void setup() {
try {
em = emf.createEntityManager();
tx = em.getTransaction();
tx.begin();
tb = new TestBean();
Field field = TestBean.class.getDeclaredField("entityManager");
field.setAccessible(true);
field.set(tb, em);
} catch (Exception ex) {
ex.printStackTrace();
}
}

@After
public void tearDown() throws Exception {
if (em != null) {
tx.commit();
em.close();
}
}

}

关于java - JPA2 示例嵌入式 Java EE 容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5027003/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com