当前位置: 首页 > 面试题库 >

休眠批量更新后清除会话,刷新,刷新吗?

壤驷鸿祯
2023-03-14
问题内容

众所周知,在使用hibernate模式(甚至在HQL中)对数据库进行批量更新时,所做的更改不会复制到当前会话中存储的实体中。

因此,我可以调用session.refresh将修改内容加载到我的会话实体中。

我们经常调用flush将修改发送到数据库,但是文档说它“同步”了会话和html" target="_blank">数据库。

这是否意味着flush能够为我的会话实体设置良好的新db值?否则flush最终将使用存储在实体中的旧数据库擦除我的新db值?(顺便说一句,如果hibernate的行为是第一个,那么它如何检测到哪个是“好值”?)

如果我不能在这种情况下使用冲洗,那么最好在每次批量更新后清除会话,以确保我们在会话中具有良好的价值?


问题答案:

所有flush要做的就是将以前缓存的SQL语句发送到数据库。它不会更改已在会话中的对象。在某种程度上,它的作用与您的需求相反。刷新产生的SQL语句可能会覆盖您的批量更新更改。你可能想要做的flush(),然后clear()你的更新之前。或者,如果您不想清除整个缓存,则evict()。我从未尝试过,refresh()但似乎也可以。



 类似资料:
  • 问题内容: 我希望我知道此列表中每个项目的确切功能,工作原理,后果以及何时使用正确的时间。 刷新 驱逐 复制 冲洗 我什至不知道每个人的工作,但我不确定,因此我要求您的帮助,因为我真的很想了解它。 我知道这是一个非常笼统的问题,但是我认为了解这一切真的很有用。 谢谢。 问题答案: 在 Hibernate文档 提供了很好的例证。另外,此博客文章还将为您提供一些见识。我将从下面添加一些行。 使用该方法

  • 问题内容: 如果将新文档索引到Elasticsearch索引,则可在索引操作后1秒钟左右搜索新文档。但是,可以通过调用或对索引进行操作来强制使该文档可立即搜索。这两个操作之间有什么区别- 结果似乎对他们来说是相同的,可以立即搜索文档。 这些操作中的每一项到底是什么? ES文档似乎并未深入解决此问题。 问题答案: 您得到的答案是正确的,但我认为值得详细说明。 刷新有效地调用了Lucene索引读取器上

  • 我ogin.php 指数php 我做了一个登录脚本,打开,如果密码是正确的,我ndex.php网站。当第一次通过登录脚本打开ndex.php网站时,一切正常,会话设置完毕。但是在我刷新页面后,会话会被破坏,并且没有设置。那么我如何保存会话,这样它就不会因为刷新浏览器而被破坏呢?

  • 对Powershell很陌生,希望有人能给我指明正确的方向。我想知道是否有一个更干净的方法来完成我下面的工作?如果我对第一次Get-ChildItem调用时返回的文件(存储在$items变量中)做了一些更改,那么有没有一种方法可以刷新到Get-ChildItem的内容? 在第一个foreach语句中,我为返回的所有文件创建一个日志签名。一旦那样做了,我需要做的是;再次获取列表(因为路径中的项已经更

  • 问题内容: 我正在使用Vaadin 8.5.1网格来显示1000行。一旦使用属性的更改更新了行,我将使用 或 无法更新行。 我需要显式查看该行的更新属性。 我正在使用下面的代码片段来创建网格 欣赏是否有人可以分享有关如何解决此问题的指针 TIA 问题答案: 为了使一个项目被视为同一项目(以及刷新工作),您需要在该对象上正确实现和方法。 从文档中 公共无效refreshItem(T项目) 从接口:D

  • 问题内容: 我试着通过网络搜索,但是徒劳。有没有一种方法可以使用hibernate来执行幂等更新。 一种用例是使用HTTP PUT通过REST API更新数据库中的特定字段。因此,例如,如果我有一个包含列: _ Id,Name,Phone,UpdateDate*_ 的数据库 _ ,_ 并且我多次用相同的值更新(特定 ID的 ) Phone ( 电话) 字段,那么只有我的第一个操作必须更新 Phon