我想知道hibernate缓存: -
当我们更新Cache中的对象时,它会自动在数据库中更新。如果没有,那么它将如何更新?
如果数据库已更新,它会立即在缓存中更新,如果没有,那么它将如何更新?
答案 0 :(得分:1)
Hibernate有第一级和第二级缓存。第一级缓存是强制性的,它是存储要与数据库同步的附加实体的缓存。
因此,在刷新时,第一级缓存和当前db事务处于同步状态,而在提交时,更改也会传播到其他连接。
二级缓存有多种形式:
某些实现也是群集的,并具有其他同步选项。
同步模式越安全,性能就越低,所以请确保为应用程序用例选择合适的。
答案 1 :(得分:0)
阅读这篇文章:What are First and Second Level caching in Hibernate?
基本上Hibernate透明地管理这些缓存。因此,如果您使用的是SessionFactory,则无需担心更新内容以及存储位置,Hibernate会为您管理。缓存(在两个级别)的存在只是为了尝试减少Hibernate必须进行的数据库调用的数量。您不应该尝试直接控制第一级缓存,如果您正在执行一些严重的系统优化,则应该只尝试显式配置二级缓存。
但要回答你的问题:
据我所知,您不会更新缓存的实例。如果您正在执行更新,Hibernate将更新数据库并将新对象状态保留到第1级缓存。
第一级缓存是,第二级缓存否,您可以配置二级缓存以定期使持久数据过期,但正如documentation所述,缓存不知道对持久化的更改存储
阅读文档并查看是否可以进一步回答您的问题。