返回介绍

Hibernate 缓存

发布于 2025-01-04 01:27:29 字数 907 浏览 0 评论 0 收藏 0

Hibernate 是一个持久化框架,经常需要访问数据库。如果我们能够降低应用程序对物理数据库访问的频次,那会提供应用程序的运行性能。缓存内的数据是对物理数据源中的数据的复制,应用程序运行时先从缓存中读写数据。

缓存就是数据库数据在内存中的临时容器,包括数据库数据在内存中的临时拷贝,它位于数据库与数据库访问层中间。ORM 在查询数据时首先会根据自身的缓存管理策略,在缓存中查找相关数据,如发现所需的数据,则直接将此数据作为结果加以利用,从而避免了数据库调用性能的开销。而相对内存操作而言,数据库调用是一个代价高昂的过程。

Hibernate 缓存包括两大类:一级缓存和二级缓存。

  • Hibernate 一级缓存又被成为“Session 的缓存”。Session 缓存是内置的,不能被卸载,是事务范围的缓存。在一级缓存中,持久化类的每个实例都具有唯一的 OID。
  • Hibernate 二级缓存又被称为“SessionFactory 的缓存”。由于 SessionFactory 对象的生命周期和应用程序的整个过程对应,因此 Hibernate 二级缓存是进程范围或者集群范围的缓存,有可能出现并发问题,因此需要采用适当的并发访问策略,该策略为被缓存的数据提供了事务隔离级别。第二级缓存是可选的,是一个可配置的插件,默认下 SessionFactory 不会启用这个插件。

那么什么样的数据适合放入到缓存中?

  • 很少被修改的数据   
  • 不是很重要的数据,允许出现偶尔并发的数据   
  • 不会被并发访问的数据   
  • 常量数据

什么样的数据不适合放入到缓存中? 

  • 经常被修改的数据   
  • 绝对不允许出现并发访问的数据,如财务数据,绝对不允许出现并发   
  • 与其他应用共享的数据

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文