【发布时间】:2021-11-11 10:52:37
【问题描述】:
Hibernate 中一级缓存和二级缓存有什么区别?
嗨,我正在学习 Hibernate。我阅读了一些关于一级和二级缓存的文档。它们之间有什么区别?从文档中很难理解。似乎他们做同样的事情,并在将它们推送到数据库之前将一些值存储在 JVM 中......实际上有什么区别?
【问题讨论】:
标签: java spring-boot hibernate hibernate-cache
Hibernate 中一级缓存和二级缓存有什么区别?
嗨,我正在学习 Hibernate。我阅读了一些关于一级和二级缓存的文档。它们之间有什么区别?从文档中很难理解。似乎他们做同样的事情,并在将它们推送到数据库之前将一些值存储在 JVM 中......实际上有什么区别?
【问题讨论】:
标签: java spring-boot hibernate hibernate-cache
好的,下面是你如何看待它...
Hibernate 中最基本的类之一是 Session 类。
Session 用于获取与数据库的物理连接。 Session 对象是轻量级的,旨在在每次需要与数据库交互时实例化
顾名思义,一级缓存是hibernate在从数据库中加载对象之前首先查询的缓存。它在 Session 级别维护,默认情况下处于启用状态。
现在,让我们来看看二级缓存。这是 Hibernate 提供的可选缓存。与只有维护它的会话才能访问的一级缓存不同,二级缓存可供所有会话访问。
这意味着,如果一个 Session 加载了一个对象,比如 id=1 的 Person,而第二个 session 也加载了同一个对象,那么只会进行一次数据库调用。
这从本质上解释了根本的区别。 一级缓存 -> 强制且仅用于一个会话。 二级缓存 -> 可选并由所有会话共享
好的,那么我们如何使用这个功能让我们的生活变得更美好、更轻松呢?
这有什么用例?
您可以在这个惊人的post 中找到详细信息。
【讨论】: