gpt4 book ai didi

java - hibernate 批量更新后清除 session 、刷新、刷新?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:47:16 31 4
gpt4 key购买 nike

我们知道,当使用 hibernate 对数据库进行批量更新时(即使在 HQL 中),所做的更改不会复制到存储在当前 session 中的实体。

所以我可以调用 session.refresh 来加载对我的 session 实体的修改。

我们经常调用 flush 将我们的修改发送到数据库,但文档说它“同步” session 和数据库...

这是否意味着 flush 能够为我的 session 实体设置好的新数据库值?或者 flush 最终会用存储在实体中的旧值删除我的新数据库值?(顺便说一句,如果 hibernate 的行为是第一个,它如何检测哪个是“好的值(value)”?)。

如果我不能在这种情况下使用 flush,最好在每次批量更新后清除 session ,这样我们就可以确保在我们的 session 中有好的值?

最佳答案

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

关于java - hibernate 批量更新后清除 session 、刷新、刷新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7757244/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com