【发布时间】:2014-06-05 23:50:18
【问题描述】:
这一定是显而易见的事情,因为它没有在任何地方提及,但我仍然觉得需要确认它。
如果要在持久化操作中使用EntityManager,是否总是需要在事务中?
除非我将其包含在getTransaction().begin() 和getTransaction().commit() 中,否则以下应用程序管理的EntityManager 代码不会保留任何内容:
EntityManager em = entityManagerFactory
.createEntityManager();
Event e = new Event("A name", new Date());
em.persist(e);
但find() 调用工作正常。
- 这是否意味着除非在事务中,否则我不能使用 EM 进行写入/更新操作?如果是这样,为什么当我尝试在没有事务的情况下使用它时没有抛出异常?如果不在事务中,EM 是否可以设置为自动开始并提交事务?
- 如果容器管理的 EM 仍然是对在一个事务中注入的同一个 EM 实例对事务中涉及的各种组件的引用,还是多个 EM 实例可以共享一个事务?
- 可以在多个事务中使用 1 个 EM 实例吗?
【问题讨论】:
标签: jakarta-ee jpa entitymanager