gpt4 book ai didi

java - Hibernate一级缓存及get方法

转载 作者:太空宇宙 更新时间:2023-11-04 11:54:12 26 4
gpt4 key购买 nike

我读到 session.get(Employee.class, new Long(1)) 方法将从缓存或数据库中获取数据。

如果有两个用户同时访问该应用程序。

如果用户->用户1正在执行get操作,那么将从数据库中检索数据。现在数据已移至缓存。
如果user->User2删除了记录或者更新了记录。那么
如果 user -> User1 正在执行 get 操作,那么数据将从缓存中检索。

User1 是否正在获取旧数据。是否陷入缓存的陷阱。或者我在这里遗漏了什么?

我可以说为什么 User1 在同一个 session 中执行两次 session.get 。但我仍然需要不同的意见。

最佳答案

你理解正确:缓存是和session绑定(bind)的,如果一个对象被加载到一级缓存中,那么用#get()就不会执行任何SQL。您可以使用 #evict() 从缓存中清除一个对象,或使用 #clear() 从缓存中清除每个对象,而无需关闭 session 。关闭 session 将始终删除整个缓存。

看到一个很好的解释here .

关于java - Hibernate一级缓存及get方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41506786/

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