对Hebernate缓存的理解

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

Hibernate的缓存目前比较常见的使用是它的:一级缓存(Session缓存),二级缓存(第三方插件缓存)。

缓存:

         缓存就是把当前查询出来或是使用过的对象保存到内存中(一个数据结构当中),这个数据结构通常是或类似于hashMap,当以后要使用某个对象时, 会先到缓存中去找有没有这个对象,如果有就使用缓存中的,如果没有就 到数据中去查询,并将查询出来的数据保存到缓存中,方便下次使用。即使用缓存会涉及到三个方面:把数据放入缓存,从缓存中读取缓存,删除无用的缓存。

一级缓存:

        Hibernate的session是一种缓存,通常被称为hibernate的一级缓存。用session查询数据时,首先会从session内部去找有没有,有就使用session中的,没有就到数据库中去查,并将查到的结果放到session中,方便下次使用。由于session代表一次会话,与一个数据库连接相关联,所以session最好不要长时间保持打开,通常仅用于一个事务当中,事务关闭的时候就应该结束。另外,session是线程不安全的,当多线程共享使用时会出现问题。通常只有那种全局意义的缓存才是真正的缓存应用,才有大的缓存使用价值。二级缓存就能达到这个使用价值。Session级共享的: save, update, saveorupdate, list, get, load, iterate, lock这些方法都会放在一级缓存中。Session缓存的另一个缺点是不能控制缓存的数量,当大批量数据操作时会造成数据的溢出。但可以用evict, clear去清除缓存。

二级缓存:

        它是独立于hibernate的一个软件部件,属于第三方产品,常用的第三方缓存产品有:EhCache, OsCache, TreeCache,SwarmCache。可以通过对org.hibernate.cache.EhCacheProvider和Cache接口来实现。二级缓存的配置: 首先,开启缓存,确定使用哪个产家的第三方产品,配置该缓存自己的配置文件,然后要配置hibernate中那些对象需要纳入二级缓存中,这就是这的配置思路。另处需要注意的是,一个二级缓存只能负责缓存一个数据库中的数据,否则就会造成与实际数据不相符。

hebernate 学习笔记 介于初学者。。用于学习马士兵视频里面的源码、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、 立即下载

相关推荐

新手避坑指南:从GEO数据库下载单细胞测序数据的5个关键步骤(附实操截图)

本文为单细胞测序数据下载新手提供5个关键避坑步骤,涵盖数据搜索准备、样本量评估、文件选择决策、元数据诊断及高效下载技术。通过实操截图和代码示例,帮助研究者快速锁定GEO数据库中的优质单细胞测序数据,避免常见错误。

weixin_30296405的博客 532

HeberNate入门(一)

杂记 下载地址 http://hibernate.org/orm/downloads/

apria 825

【C++】开源:ncurses终端TUI文本界面库

ncurses配置使用(TUI)

DevFrank的博客 3136

Hibernate框架简述

 Hibernate的核心组件在基于MVC设计模式的JAVA WEB应用中,Hibernate可以作为模型层/数据访问层。它通过配置文件(hibernate.properties或hibernate.cfg.xml)和映射文件(***.hbm.xml)把JAVA对象或PO(Persistent Object,持久化对象)映射到数据库中的数据库,然后通过操作PO,对数据表中的数据进行增,删,改,

672

Hebernate常用操作

笔记:记录Hibernate的基本操作

m0_52941727的博客 359

hibernate简单配置

1.先介绍下hebernate         Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架 2.核心配置文件 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE hibernate-configuration PU...

Dream的博客 242

Mybatis工作原理及实现增删查改(一)

(一)什么是Mybatis MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。 (二)Hebe...

凯耐的博客 1739

理解hibernatesession缓存机制(一级缓存和二级缓存

Hibernate向我们提供的主要的操纵数据库的接口,Session就是其中的一个,它提供了基本的增,删,改,查方法.而且具有一个缓存机制,能够按照某个时间点,按照缓存中的持久化对象属性的变化来更新数据库,着就是Session缓存清理过程.在Hibernate中对象分为三个状态,临时,持久化,游离.如果我们希望JAVA里的一个对象一直存在,就必须有一个变量一直引用着这个对象.当这个变量没了.对象

zhongwen7710的专栏 1233

hebernate获取数据的方式(find,load,get)区别

find:先从session缓存中查找,没有数据就从数据库查找(忽略二级缓存),找不到记录,返回NULL; laod:先从session缓存中查找,然后建立代理类,没有数据就从二级缓存中查找,再没有就从数据库查找,找不到就抛出异常; get:先从session缓存中查找,没有数据就从二级缓存中查找,再没有就从数据库查找,找不到返回NULL; 注:get方式查找时,如果之前已经被load加载过

wumengchao的专栏 631

Mybatis 一级缓存和二级缓存

查询缓存 首先,我们先看一下这个标题“查询缓存”,那就说明跟增、删、改是没有任何关联的,只有在查询时,才会遇到缓存,增删改不涉及! 查询缓存目前Mybatis中提供了两个,分别是:一级缓存、二级缓存; 一级缓存 先说一下一级缓存的范围:同一个SqlSession对象,也就说,我们是同一个SqlSession对象,又要进行同样的查询操作,那么,我们就可以去缓存中获取; 所以,SqlSess...

大道至简 485

关于hibernate的三级缓存机制

Hibernate缓存到底是几级?       关于上面的问题,大部分人会说是三级缓存机制,当然也有人会说是两级。不同的技术书籍会有不同的解释,已认为是三级缓存机制的较多,但关于三级缓存机制也有不同的解释。 其中,对于第一级缓存session级别的缓存大家没有太大的争议。由于Session对象的生命周期通常对应一个数据库事务或者一个应用事务,因此它的缓存是事务范围的缓存。第一级缓存是必需的

ena12345的专栏 3839

关于Hibernate一级缓存和快照的理解

Hibernate的一级缓存和快照 hibernate的一级缓存属于session级别的缓存。它存在的目的是为了提高代码的效率,减少访问数据库的次数。程序在调用方法操作数据时,hibernate会发送一条sql语句获取到数据后再由hibernate组装之后返回给程序。如果程序需要多次操作同一数据时,hibernate就要不断的向数据库发送sql语句,这样就大大降低了程序的执行效率。hibernat...

羽枫760的博客 533

hibernate对象的三种状态以及加载策略 .附加一级缓存讲解 和 并发控制

1. 对象的三种状态(hibernate管理的对象) 1.1 临时状态 (new delete) 1.2 持久状态(get save update) 1.3 游离状态 (close) 注意: 1、hibernate通过管理对象来操作数据库,这里对象指的是持久态的对 象 2、各种状态的对象是可以相互转换 **2. **一级缓存、快照(orm特性:对象 关系 映射)对象改变数据改变 一级缓存讲解 ...

Soul717的博客 383

Hibernate框架】Hibernate框架缓存机制

1.Hibernate中的缓存 HIbernate中的缓存可以分为三种 a.一级缓存(session):默认生效 b.二级缓存(sessionFactory):通过配置生效 配置方式: 1.1Ehcache缓存Hibernate3中的配置 a.在src目录下设置缓存配置文件ehcache.xml <ehcache> <di...

qq_41614424的博客 191

hibernate一级缓存和二级缓存的区别

缓存是介于应用程序和物理数据源之间,其作用是为了降低应用程序对物理数据源访问的频次,从而提高了应用的运行性能。缓存内的数据是对物理数据源中的数据的复制,应用程序在运行时从缓存读写数据,在特定的时刻或事件会同步缓存和物理数据源的数据。   缓存的介质一般是内存,所以读写速度很快。但如果缓存中存放的数据量非常大时,也会用硬盘作为缓存介质。缓存的实现不仅仅要考虑存储的介质,还要考虑到管理缓存的并发

u010502127的专栏 435

Hibernate缓存机制(重要)

1.说下Hibernate缓存机制(重要) 一级缓存,二级缓存 Session缓存被称为hibernate的第一级缓存SessionFactory的外置缓存称为hibernate 的二级缓存。这两个缓存都位于持久层,它们存放的都是数据库数据的拷贝。SessionFactory的内置缓存存放元数据和预定义SQL,SessionFactory的内置缓存是只读缓存Hibernate缓存包括...

weixin_42595331的博客 747

Hibernate缓存

  缓存的作用主要用来提高性能,可以简单的理解成一个Map;使用缓存涉及到三个操作:把数据放入缓存、从缓存中获取数据、删除缓存中的无效数据。 一级缓存Session级共享。 save,update,saveOrUpdate,load,get,list,iterate,lock这些方法都会将对象放在一级缓存中,一级缓存不能控制缓存的数量,所以要注意大批量操作数据时可能造成内存溢出;可以用...

不积跬步 无以至千里 不积小流 无以成江海 212

Hibernate三状态,一级缓存,懒加载,急加载

一、hibernate实体有三个状态 1、瞬时状态 --->只在内存中存在,与数据库无关 当我们通过Java的new关键字来生成一个实体对象时,这时这个实体对象就处于自由状态,如下: 这时user对象就处于自由状态,为什么说user对象处于自由状态呢?这是因为,此时user只是通过JVM获得了一块内存空间,还并没有通过Session对象的save()方法保存进数据库,因此也就还没...

libobo22的博客 238

Hbernate二级缓存攻略(转)

  原文地址:这里。一直对hibernate二级缓存用得不多,翻翻JE精华文章,发现不少好文。特转了过来。  很多人对二级缓存都不太了解,或者是有错误的认识,我一直想写一篇文章介绍一下hibernate的二级缓存的,今天终于忍不住了。 我的经验主要来自hibernate2.1版本,基本原理和3.0、3.1是一样的,请原谅我的顽固不化。 hibernatesession提供了一级缓存,每个ses...

天涯何处是我家 184

java集群缓存_java – 使用ehcache集群的hibernate缓存:nonstrict对严格的读写

非限制性读写和读写之间的真正区别是什么?我可以阅读ehcache和hibernate文档,但是据我所见,他们只会说“如果你做更新,读写会更好”.我觉得不舒服我可能有一个长期存储的缓存集合的问题配置如下:eternal="false" overflowToDisk="false" timeToIdleSeconds="1200"timeToLiveSeconds="1800">class="n...

weixin_29072299的博客 128
上一篇: hibernate的理解
下一篇: hibernate的级联、延迟加载、inverse属性
ITbiyu
博客等级 码龄17年 18粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值