栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么我们必须在扩展的PersistenceContext中手动flush()EntityManager?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么我们必须在扩展的PersistenceContext中手动flush()EntityManager?

是直接和金属,不会有

javax.transaction.Synchronization
问题登记EntityManager的对象,直到你真正 使用
交易。

我们在app-server-
land中将创建这些对象之一来执行

flush()
并将其注册到
javax.transaction.TransactionSynchronizationRegistry
javax.transaction.Transaction
。除非有活动的交易,否则无法完成此操作。

这就是它的长短。

是的,应用服务器可以很好地保存它提供给有状态Bean的资源列表,并自动将其注册到有状态Bean可能启动或参与的每个事务中。其缺点是,您完全失去了决定执行哪些操作的能力在其中进行交易。也许您有2或3个不同的事务要在不同的持久性单元上运行,并在扩展持久性上下文中汇总非常特定的事务的工作。这实际上是一个设计问题,应用服务器应将此类决策留给应用本身。

您在交易中使用它,我们将其注册在交易中。那是基本合同。

旁注,根据底层EntityManager的处理方式,对EntityManager的 任何 持久调用都 可能
足以在事务结束时引起完全刷新。当然,这

flush()
是最直接,最明确的方法,但一个
persist()
甚至一个
find()
都可以。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/516580.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号