您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

EntityManager在多线程应用程序中?

EntityManager在多线程应用程序中?

EntityManager是一种廉价的,非线程安全的对象,应针对单个业务流程,单个工作单元使用一次,然后丢弃。

这完全可以回答您的问题。不要通过线程共享EM。只要一个事务处理是 工作单元的 一部分,就可以对多个事务使用一个EM 。

此外,关闭后无法使用Entitymanger

调用close方法后,EntityManager实例上的所有方法以及从该实例获取的任何Query,TypedQuery和StoredProcedureQuery对象都将引发IllegalStateException。

考虑这样的事情:

public class Controller {

    private EntityManagerFactory emf;

    public void doSomeUnitOfWork(int id) {
        EntityManager em = emf.createEntityManager();
        em.getTransaction().begin();

        CrudDao dao = new CrudDao(em);

        Entity entity = dao.get(id);
        entity.setName("James");
        dao.save(entity);

        em.getTransaction.commit();
        em.close();
    }

}
其他 2022/1/1 18:22:14 有553人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶