java Hibernate缓存更新机制 1 周,6 日 Questions & Answers 270 我想知道有关hibernate缓存的信息:- 当我们在缓存中更新对象时,它会在数据库中自动更新。如果没有,它将如何更新 如果数据库被更新,它会在缓存中立即更新吗?如果不会,那么它将如何更新
# 1 楼答案 Hibernate有一个一级缓存和一个可选的二级缓存。第一级缓存是必需的,它存储要与数据库同步的连接实体 因此,在刷新时,第一级缓存和当前db事务是同步的,而在提交时,更改也会传播到其他连接 二级缓存有多种口味: 只读(从未更新) 非严格读写(没有缓存锁,因此当两个相互竞争的事务修改同一个条目时,不清楚谁会赢) 读写:类似于读提交的数据库隔离级别李> 事务性:缓存将被登记到当前JTA事务中 一些实现也采用集群方式,并具有额外的同步选项 同步模式越安全,性能就越差,因此请确保为应用程序用例选择正确的同步模式
# 2 楼答案 读一下这篇文章:What are First and Second Level caching in Hibernate? 基本上Hibernate透明地管理这些缓存。因此,如果您使用的是SessionFactory,您不必担心更新的内容和存储位置,Hibernate会为您管理这些内容。缓存(在两个级别)的存在只是为了尝试减少Hibernate必须进行的数据库调用的数量。你不应该试图直接控制一级缓存,如果你正在对系统进行一些认真的优化,你应该只尝试显式地配置二级缓存 但要回答你的问题: 据我所知,您不会更新缓存的实例。如果您正在执行更新,Hibernate将更新数据库并将新对象状态持久化到一级缓存 一级缓存是,二级缓存否,您可以将二级缓存配置为定期使持久化数据过期,但正如documentation所述,缓存不知道对持久化存储所做的更改 阅读文档,看看这是否进一步回答了你的问题
# 1 楼答案
Hibernate有一个一级缓存和一个可选的二级缓存。第一级缓存是必需的,它存储要与数据库同步的连接实体
因此,在刷新时,第一级缓存和当前db事务是同步的,而在提交时,更改也会传播到其他连接
二级缓存有多种口味:
一些实现也采用集群方式,并具有额外的同步选项
同步模式越安全,性能就越差,因此请确保为应用程序用例选择正确的同步模式
# 2 楼答案
读一下这篇文章:What are First and Second Level caching in Hibernate?
基本上Hibernate透明地管理这些缓存。因此,如果您使用的是SessionFactory,您不必担心更新的内容和存储位置,Hibernate会为您管理这些内容。缓存(在两个级别)的存在只是为了尝试减少Hibernate必须进行的数据库调用的数量。你不应该试图直接控制一级缓存,如果你正在对系统进行一些认真的优化,你应该只尝试显式地配置二级缓存
但要回答你的问题:
据我所知,您不会更新缓存的实例。如果您正在执行更新,Hibernate将更新数据库并将新对象状态持久化到一级缓存
一级缓存是,二级缓存否,您可以将二级缓存配置为定期使持久化数据过期,但正如documentation所述,缓存不知道对持久化存储所做的更改
阅读文档,看看这是否进一步回答了你的问题