java - 休眠缓存级别 1 和 2
问题描述
Hibernate 中的一级缓存和二级缓存有什么区别?
嗨,我正在学习休眠。我阅读了一些关于一级和二级缓存的文档。它们之间有什么区别?从文档中很难理解。似乎他们做同样的事情并在将它们推送到数据库之前将一些值存储在 JVM 中......实际上有什么区别?
解决方案
好的,这就是你如何看待它......
Hibernate 中最基本的类之一是Session
类。
ASession
用于获得与数据库的物理连接。该Session
对象是轻量级的,设计为在每次需要与数据库交互时实例化
顾名思义,一级缓存是hibernate在从数据库中加载对象之前首先咨询的缓存。它在会话级别维护,默认情况下是启用的。
现在,让我们来看看二级缓存。这是 Hibernate 提供的可选缓存。与只有维护它的会话才能访问的一级缓存不同,所有会话都可以访问二级缓存。
这意味着如果一个 Session 加载了一个对象,比如 id=1 的 Person 并且第二个 session 也加载了相同的对象,那么只会进行一次数据库调用。
这从本质上解释了根本的区别。 一级缓存-> 强制且仅用于一个会话。 二级缓存-> 可选并由所有会话共享
好的,那么我们如何使用这个功能让我们的生活变得更好更轻松呢?
这有什么用例?
您可以在这篇精彩的帖子中找到详细信息。
推荐阅读
- arrays - 找到键后在 SQL 中解析 Json 数组的问题
- flutter - Flutter:天文台服务器在 x 次尝试后无法启动
- javascript - react-snap 没有在页面上呈现 html
- ms-access - 如何将数据输入的报告输入表单?
- python - 使用 Factory Boy 推导出 LazyAttribute 的属性
- python - 正则表达式 re.compile 在 python 中将 \b 评估为 \\b
- javascript - 如何在按钮单击时更改变量值
- r - R 基于数据中标签的比例采样
- c# - 附加到 .NET Core 程序(单个文件)时没有符号
- r - 使用 apply(matrix,1:2,f) 获取(行号,列号)