对于hibernate缓存的简单理解

今天一口气看了几片关于hibernate的缓存的几片文章,我对hibernate的缓存机制更加了解了,其实也不用讲的很复杂,简单的说:
[quote]
1。缓存机制的实现可以简单的看作是一个map,key是po的id,value是po本身

2。hibernate的缓存分为两种,一级缓存可以称为session level cache,也可以认为是class级的缓存,但我更认为称为事务级的缓存更合适,因为这个一级缓存的生命周期由session决定,session创建时启用,消亡时结束。而通常事务提交时,session结束,因此以spring为例,aop拦截到方法,方法调用结束时,事务提交,一级缓存中的对象被清除,下次再调用同一方法时,是一个新的事务的开始,结果必然是从数据库中重新取得对象来填充但前session的一级缓存,前一次事务缓存的对象自然是无效的。

3。hibernate的另一种缓存是二级缓存,二级缓存可以称为sessionFactory level cache,也可以称为应用级的缓存。二级缓存的目的是使同一个sessionFactory创建出来的session共享po,因而我甚至认为它是事务无关的。它的生命周期完全可以通过失效时间来控制,粗俗的理解就是你可以决定满足什么条件时,你缓存起来的对象可以从map中remove掉。

4。说到这里,我忽然觉得,“在越高的层面上做缓存,效果就会越好”是很有道理的,底层的缓存缺乏针对性,永远不知道上层究竟要保存些什么数据,保存多久,已何种形式保存和更新更有力于上层应用的存取。
[/quote]

不过不容置疑的是,缓存对性能的提升是十分必要的。
最新扣子(coze)案例:在coze上用DeepSeek+私有数据库、知识库,创建你的专属智能体 Gartner预测,到2026年,70%的企业将通过Al知识库实现「组织记忆外化」。数字化时代,数据已成为企业发展的核心资产。我们通过人工智能将知识库从“静态存储"升级为“智能服务”。让"沉睡宝藏"焕发新生,助力企业突破数据困局。 阅读详情

相关推荐

Cesium 相机操作

Cesium 提供了三种方式对相机的位置进行摆放。

虎康的博客 2553

Hibernate ------ 缓存理解

为什么hibernate缓存的机制?hibernate框架作为一个连接着application和database的框架,他需要频繁对物理数据库进行访问。当我们在内存中创建一个缓存的时候,把一些特殊的物理数据库中的数据copy到缓存中,当application进行某些操作的时候,会先在缓存中找是否有想要的结果,有就拿来用,不需要对底层的物理数据库进行操作。这样增加整体的性能。因此需要缓存这个机制。...

qq_36098284的博客 302

《YOLOv8:从入门到实战》报错解决 & 专栏答疑

《YOLOv8:从入门到实战》专栏上线后,部分同学在学习过程中提出了一些问题,笔者相信这些问题其他同学也有可能遇到。为了让大家可以更好地学习本专栏内容,笔者特意推出了该篇专栏答疑,针对同学们在学习过程中所提出的问题进行汇总记录,并不断实时更新,希望能够帮助到大家!🌈

小哥谈 1205

对Hebernate缓存理解

Hibernate缓存目前比较常见的使用是它的:一级缓存(Session缓存),二级缓存(第三方插件缓存)。 缓存:          缓存就是把当前查询出来或是使用过的对象保存到内存中(一个数据结构当中),这个数据结构通常是或类似于hashMap,当以后要使用某个对象时, 会先到缓存中去找有没有这个对象,如果有就使用缓存中的,如果没有就 到数据中去查询,并将查询出来的数据保存到缓存中,方便

ITbiyu的专栏 1938

hibernate缓存理解

为什么80%的码农都做不了架构师?>>> ...

weixin_34235457的博客 159

hibernate缓存理解

  谈谈对HIBERNATE缓存理解hibernate提供二级缓存机制。1.第一级缓存是session的缓存,由于session的生命周期是建立在一个数据库事务或者一个应用事务,因此这个缓存是事务范围的缓存。2.第二级缓存是一个可插拔的缓存插件,它由sessionfactory负责管理,由于sessionfactory的生命周期和应用程序的整个过程对应,因此二级缓存是进程或者集群范围

zuuzhang的专栏 683

Hibernate缓存理解

Session缓存,一级缓存. SessionFactory的缓存分为内置缓存和外置缓存. 内置缓存中存放的是SessionFactory对象的一些集合属性包含的数据(映射元素据及预定义SQL语句等),对于应用程序来说,它是只读的.外置缓存中存放的是数据库数据的副本,其作用和一级缓存类似.二级缓存除了以内存作为存储介质外,还可以选用硬盘等外部存储设备. 缓存的范围分为3类:

lijunlinlijunlin的专栏 702

hibernate mysql缓存机制_理解hibernate缓存

简单理解Hibernate三种状态的概念及互相转化在Hibernate中有三种状态,对它的深入理解,才能更好的理解hibernate的运行机理,刚开始不太注意这些概念,后来发现它是重要的。对于理解hibernate,JVM和sql的关系有更好的理解。对于需要持久化的JAVA对象,在它的生命周期中有三种状态,而且互相转化。Hibernate三种状...文章文艺小青年2017-08-11800浏览量h...

weixin_33218578的博客 330

java hibernate 缓存机制_hibernate缓存原理要如何理解

想要熟练掌握一门框架,除了基本的增删改查功能外它的原理也是要了解的,本篇文章就来了解下hibernate缓存原理吧。在Hibernate中分别提供了两级Cache:Session级别缓存为一级别 ,属于事务范围缓存。通常这一级别的缓存是直接由hibernate管理的,在一般情况下是没有必要干预的。SessionFactory缓存则为二级别,它是属于进程范围或群集范围的缓存。这个级别的缓存可以进行...

weixin_30014265的博客 172

Hibernate session缓存理解

Session 缓存概述 Session级别的缓存Hibernate的一级缓存,主要提供事务级别的缓存处理,用来提高访问数据库的性能等. 在Session的接口实现中包含一系列的java集合,这些集合构成了Session的缓存. 只要Session实例没有结束生命周期,存放在它缓存中的对象也不会结束生命周期. 当Session 通过save()方法持久化一个对象时,这个对象被加入到Session...

独钓寒江雪 169

Hibernate缓存理解

Hibernate缓存目前比较常见的使用是它的:一级缓存(Session缓存),二级缓存(第三方插件缓存)。 缓存:          缓存就是把当前查询出来或是使用过的对象保存到内存中(一个数据结构当中),这个数据结构通常是或类似于hashMap,当以后要使用某个对象时, 会先到缓存中去找有没有这个对象,如果有就使用缓存中的,如果没有就 到数据中去查询,并将查询出来的数据保存到缓存中,方便

gst6062825的专栏 714

hibernate缓存机制的理解

Hibernate缓存的作用:     Hibernate是一个持久层框架,经常访问物理数据库,为了降低应用程序对物理数据源访问的频次,从而提高应用程序的运行性能。缓存内的数据是对物理数据源中的数据的复制,应用程序在运行时从缓存读写数据,在特定的时刻或事件会同步缓存和物理数据源的数据 Hibernate缓存分类:   Hibernate缓存包括两大类:Hibernate一级缓存和Hibern

技术人宝哥 1158

我对Hibernate二级缓存理解

1.Hibernate中两个级别的缓存 a)第一级别的缓存是Session级别的缓存,它是属于事务范围的缓存。这一级别的缓存hibernate管理的,一般情况下无需进行干预,也可以理解为基于某个线程的(每次回话就是一次线程访问) b)第二级别的缓存是SessionFactory级别的缓存,它是属于进程范围的缓存 2.二级缓存 a)当使用load或者get方法的...

142

hibernate:真正理解二级缓存和查询缓存

关于hibernate的O/R映射我已经写了多篇文章,并且受到了广泛的欢迎。hibernate不仅仅是社区上一个受欢迎的小孩,他实际上是非常强大一致和可信赖的数据库映射工具。映射Java中的对象到关系型数据库中有很多你需要知道的面。hibernate为了线程简单的启动做了特殊的处理,并为了超复杂的映射提供了便利。 数据库和你的Java对象间的映射一个主要的关注点是性能问题,那些没有花太多时间使用

maoyeqiu的专栏 3895

hibernate二级缓存理解

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34138139的博客 108

理解Hibernate的Session和缓存机制

Hibernate的session和缓存机制

一个真实、有温度的无名小卒 951

Hibernate缓存机制的理解

hibernate中session一级缓存机制中,有这么一种情况: 问题描述:我需要new一个对象,对它的几个字段赋值,但是有一些属性并没有进行赋值,然后调用 session.save()方法,在提交事务后,会出现这样的情况: 1:在数据库中有默认属性的字段的值为空 2:既然是持久化对象,为什么在最后对象拿不到默认属性的值? 通过调试后解决方案如下: 对于问题一,如你在数据库里设...

归来朝歌 230

hibernate理解缓存机制

一级缓存(session缓存) 1、Session的save()方法持久一个对象后,该对象加入到session的缓存中,以后即使应用程序中的引用变量不再引用该对象,只要session的缓存中没有被清空,该对象仍然处于生命周期中。 2、当Session的get方法视图从数据库中加载对象时,Session优先判断缓存是否存在该对象,如果存在,则不需要去数据库中检索,对象是存在内存中的 Sessi...

wumengdi100的博客 282

hibernate的二级缓存理解

对于Hibernate这类ORM而言,缓存显的尤为重要,它是持久层性能提升的关键.简单来讲Hibernate就是对JDBC进行封装,以实现内部状态的管理,OR关系的映射等,但随之带来的就是数据访问效率的降低,和性能的下降,而缓存就是弥补这一缺点的重要方法.     缓存就是数据库数据在内存中的临时容器,包括数据库数据在内存中的临时拷贝,它位于数据库与数据库访问层中间.ORM在查询数据时首先会

moonshine 941

用例子理解hibernate的一级缓存

缓存由ORM框架提供以便用户可以获得更快速的访问速度,同时框架本身也减少了数据库查询操作。 hibernate中的一级缓存是默认使用的,使用它你不需要操作任何事情。实际上,你不能强制关闭它。 如果我们我们知道一级缓存是和Session对象相关连的,那么理解一级缓存就会变得容易多了。我们知道Session对象由Session工厂创建,Session关闭的时候,对象丢失。同样的一级缓存只有在Ses

maoyeqiu的专栏 1899

记录我自己对hibernate的一、二级缓存理解

Hibernate的一级缓存和二级缓存 记录自己对一级缓存和二级缓存理解 Hibernate一级缓存 一级缓存,又叫做session缓存,是属于单个session的。它是内置的,默认开启的; 主要目的是减少对数据库的访问,从而提高hibernate的执行效率,毕竟hibernate访问数据库这方面较慢(当执行一次查询操作的时候,执行第二次查询操作,先检查缓存中是否有数据,如果有数据就不查询数据...

penghaoyuan的博客 329

hibernate进二阶之理解二级缓存

Hibernate提供了基于应用程序级别(进程)的缓存, 可以跨多个session,即不同的session都可以访问缓存数据。 这个换存也叫二级缓存Hibernate提供的二级缓存有默认的实现,且是一种可插配的缓存框架!如果用户想用二级缓存,只需要在hibernate.cfg.xml中配置即可; 不想用,直接移除,不影响代码。 hibernate.cfg.xml false

Tomsheng321的专栏 1467
上一篇: hibernate 的批量更新
下一篇: struts 的线程安全性
iteye_13951
博客等级 码龄8年 0粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值