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

标签 java jpa jakarta-ee jpa-2.0

我想为 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/

相关文章:

hibernate - 修复 hibernate 错误 "Use of the same entity name twice"

java - 如何使用 JPA 获取 PessimisticLockException

java - 不断取消并重新创建 Timer,Java 中的 TimerTask

java - 错误消息声称我的表名实际上是 Java Derby (SQL) 中的列

java - 错误 : java. lang.NullPointerException 以及更多来源未知的错误

Spring 测试要连接数据库

java - 通过jenkings在不同服务器上部署相同jar的两个不同版本

java - 帧动画未运行

java - 如何使用重定向处理模板

java - 当用户输入错误密码时,登录表单中不显示验证消息