jpa - EntityManager 何时获得新会话?
问题描述
通常很明显 EntityManager 正在持有当前会话,我们可以使用它来获取它:
Session session = entityManager.unwrap(Session.class);
但我很好奇 EntityManager 何时获得新的。
@编辑
@PersistenceContext(type = PersistenceContextType.TRANSACTION, unitName = "context")
private EntityManager em;
解决方案
根据您的代码,我假设您使用的是 Java EE 或 Spring。
@PersistenceContext(type = PersistenceContextType.TRANSACTION, unitName = "context")
private EntityManager em;
在这种情况下,EntityManager 绑定到事务。这意味着您在每笔新交易中都会获得一个新的 EntityManager。
Session 和 EntityManager 是相同的,并且具有相同的生命周期。这只是相同的另一个名称。Session 是 Hibernate 俚语和 EntityManager JPA。
推荐阅读
- python-3.8 - 我可以同时给 if 和 else 语句另一个 if 和 else 语句吗?
- c++ - 使用相同的泰勒级数评估 log(1+x) 的递归
- docker - 无法让 nginx 在带有 webpack-dev-server 的 docker-compose 上下文中工作
- c++ - 通过 new 运算符初始化结构的问题
- javascript - 进入异步函数
- python - 在不同的线程python中运行相同的脚本
- java - 如何在改造中发布通用对象数组
- mysql - PLese mySql 语法有什么问题
- javascript - 使用角度的RXJS从单个组件上的多个服务中获取数据
- python - 如何在屏幕截图之间延迟?