hibernate如何管理缓存

hibernate 缓存禁用 避免项目麻烦,禁用 hibernate 缓存 立即下载

         Hibernate 中提供了两级Cache,第一级别的缓存是Session级别的缓存,它是属于事务范围的缓存。这一级别的缓存由hibernate管理的,一般情况下无需进行干预;第二级别的缓存是SessionFactory级别的缓存,它是属于进程范围或群集范围的缓存。这一级别的缓存可以进行配置和更改,并且可以动态加载和卸载。 Hibernate还为查询结果提供了一个查询缓存,它依赖于第二级缓存。

    1. 一级缓存和二级缓存的比较:第一级缓存 第二级缓存 存放数据的形式 相互关联的持久化对象 对象的散装数据 缓存的范围 事务范围,每个事务都有单独的第一级缓存进程范围或集群范围,缓存被同一个进程或集群范围内的所有事务共享 并发访问策略由于每个事务都拥有单独的第一级缓存,不会出现并发问题,无需提供并发访问策略由于多个事务会同时访问第二级缓存中相同数据,因此必须提供适当的并发访问策略,来保证特定的事务隔离级别 数据过期策略没有提供数据过期策略。处于一级缓存中的对象永远不会过期,除非应用程序显式清空缓存或者清除特定的对象必须提供数据过期策略,如基于内存的缓存中的对象的最大数目,允许对象处于缓存中的最长时间,以及允许对象处于缓存中的最长空闲时间 物理存储介质内存内存和硬盘。对象的散装数据首先存放在基于内在的缓存中,当内存中对象的数目达到数据过期策略中指定上限时,就会把其余的对象写入基于硬盘的缓存中。缓存的软件实现 在Hibernate的Session的实现中包含了缓存的实现由第三方提供,Hibernate仅提供了缓存适配器(CacheProvider)。用于把特定的缓存插件集成到Hibernate中。启用缓存的方式只要应用程序通过Session接口来执行保存、更新、删除、加载和查询数据库数据的操作,Hibernate就会启用第一级缓存,把数据库中的数据以对象的形式拷贝到缓存中,对于批量更新和批量删除操作,如果不希望启用第一级缓存,可以绕过Hibernate API,直接通过JDBCAPI来执行指操作。用户可以在单个类或类的单个集合的粒度上配置第二级缓存。如果类的实例被经常读但很少被修改,就可以考虑使用第二级缓存。只有为某个类或集合配置了第二级缓存,Hibernate在运行时才会把它的实例加入到第二级缓存中。 用户管理缓存的方式第一级缓存的物理介质为内存,由于内存容量有限,必须通过恰当的检索策略和检索方式来限制加载对象的数目。Session的evit()方法可以显式清空缓存中特定对象,但这种方法不值得推荐。 第二级缓存的物理介质可以是内存和硬盘,因此第二级缓存可以存放大量的数据,数据过期策略的maxElementsInMemory属性值可以控制内存中的对象数目。管理第二级缓存主要包括两个方面:选择需要使用第二级缓存的持久类,设置合适的并发访问策略:选择缓存适配器,设置合适的数据过期策略。

  2. 一级缓存的管理: 当应用程序调用Session的save()、update()、savaeOrUpdate()、get()或load(),以及调用查询接口的 list()、iterate()或filter()方法时,如果在Session缓存中还不存在相应的对象,Hibernate就会把该对象加入到第一级缓存中。当清理缓存时,Hibernate会根据缓存中对象的状态变化来同步更新数据库。 Session为应用程序提供了两个管理缓存的方法: evict(Object obj):从缓存中清除参数指定的持久化对象。 clear():清空缓存中所有持久化对象。

  3. 二级缓存的管理:

  3.1. Hibernate的二级缓存策略的一般过程如下:

  1) 条件查询的时候,总是发出一条select * from table_name where …. (选择所有字段)这样的SQL语句查询数据库,一次获得所有的数据对象。

  2) 把获得的所有数据对象根据ID放入到第二级缓存中。

  3) 当Hibernate根据ID访问数据对象的时候,首先从Session一级缓存中查;查不到,如果配置了二级缓存,那么从二级缓存中查;查不到,再查询数据库,把结果按照ID放入到缓存。

  4) 删除、更新、增加数据的时候,同时更新缓存。 

  Hibernate的二级缓存策略,是针对于ID查询的缓存策略,对于条件查询则毫无作用。为此,Hibernate提供了针对条件查询的Query Cache。

  3.2. 什么样的数据适合存放到第二级缓存中? 

       1 很少被修改的数据 

               2 不是很重要的数据,允许出现偶尔并发的数据

       3 不会被并发访问的数据

       4 参考数据,指的是供应用参考的常量数据,它的实例数目有限,它的实例会被许多其他类的实例引用,实例极少或者从来不会被修改。

  3.3. 不适合存放到第二级缓存的数据?  

                   1 经常被修改的数据

        2 财务数据,绝对不允许出现并发 

                   3 与其他应用共享的数据。

  3.4. 常用的缓存插件 Hibernater 的二级缓存是一个插件,下面是几种常用的缓存插件:

  EhCache:可作为进程范围的缓存,存放数据的物理介质可以是内存或硬盘,对Hibernate的查询缓存提供了支持。

  OSCache:可作为进程范围的缓存,存放数据的物理介质可以是内存或硬盘,提供了丰富的缓存数据过期策略,对Hibernate的查询缓存提供了支持。

  SwarmCache:可作为群集范围内的缓存,但不支持Hibernate的查询缓存。

  JBossCache:可作为群集范围内的缓存,支持事务型并发访问策略,对Hibernate的查询缓存提供了支持。

  3.5. 配置二级缓存的主要步骤:

  1) 选择需要使用二级缓存的持久化类,设置它的命名缓存的并发访问策略。这是最值得认真考虑的步骤。

  2) 选择合适的缓存插件,然后编辑该插件的配置文件。


ADES1831和ADBMS6830 1、上电默认进入STANDBY模式,SPI发送0xFF也可以进入STANDBY模式2、看门狗定时器超时后,进入SLEEP状态3、配置寄存器中的REFON位使用WRCFGA命令将组A设置为1进入REFUP状态,此状态比待机状态更快地启动ADC转换。i<TOTAL_IC;i++)注意:读AFE数据时会随着AFE片数增加而增加,原因是唤醒时间和AFE片数密切相关,如果需要缩短时间,那么减少唤醒频次。 阅读详情

相关推荐

Xilinx Vivado vitis IDE launch Failed \ Web installer client Obsolete 怎么办

Xilinx vitis_IDE failed Web installer client Obsolete

weixin_44820962的博客 8643

清空hibernate缓存

使用JPA查询数据量很大时,会造成内存溢出,我要调用清空hibernate缓存 以下是清除方法,查询完,不使用此数据缓存,调用即可 /** * 清空session */ public void clearSession() { Session session = null; try { session = em.unwrap(Session.class); if(session==null) { } else {

彦楠的博客 2225

DTS中video-interfaces接口详解

视频数据管道通常由外部设备组成,例如通过I2C、SPI或UART总线控制的摄像机传感器,以及SoC内部IP块(包括视频DMA引擎和视频数据处理器)。 SoC内部块由DT节点描述,与其他SoC块放置方式类似。外部设备表示为它们各自总线控制器节点的子节点,例如I2C。 所有视频设备上的数据接口都由它们的子“port”节点描述。端口的配置取决于参与数据传输的其他设备,并由“endpoint”子节...

龙图腾的博客 9008

Hibernate的一级缓存

声明: 有一些博文是看的黑马程序员视频,然后跟着老师做的笔记 Spring是跟子路老师学的 特此感谢,写这些文章的目的是为了自己方便查阅

JDS_DIJ的博客 476

Pentaho安装与配置

Pentaho安装与配置前言一、下载二、配置1.JDK环境2.添加mysql-jdbc驱动三、启动 前言 Pentaho Data Integration (PDI):前身是Kettle。Pentaho提供了提取、转换和加载(ETL)功能,该功能使用统一且与最终用户和物联网技术相关且可访问的格式简化了捕获、清理和存储数据的过程。 功能:提供报表的制作、分析、仪表板、数据集成、数据采集、商业智能平台等强大功能。 一、下载 官网地址:http://www.pentaho.com/ 不过已经访问不到了

小太阳DENGJIE的博客 3602

基于STM32的HC-SR04超声波模块测距(新手级)

本人是嵌入式新手,学习了STM32的部分内容,最近想找些项目做,然后顺便学习了一下HC-SR04超声波模块,学习过程中也参考了一些大佬的文章。本文记录了自己的学习方法和学习过程,同时也希望能和各位大佬交流讨论。

weixin_63758495的博客 2204

Hibernate 缓存管理

一  hibernate内部缓存的分析 1、一级缓存 --- Session级别的缓存概念     Session级别的缓存由Hibernate自动管理的,一般情况下无需进行干预,当应用程序调用Session的CURD方法以及调用查询接口的list等等方法时,如果缓存中还不存在响应的对象,Hibernate就会把该对象加入到Session缓存中。当Hibernate清理缓存时,Hibernat

361

Android功耗系列专题理论之一:功耗优化分析思路简介

本文系统介绍了电子系统功耗分析方法,涵盖静态与动态功耗原理、电流波形分析技术和模块化拆解策略。重点阐述了PMIC与CPU协同管理机制、DVFS动态调节技术,以及通过示波器捕获波形特征定位异常的方法。针对亮屏等典型场景,提出三阶段对比分析法,并详细说明硬件/软件拆解方案及混合验证策略。文章还总结了常见问题模块(CPU、多媒体、外设)的排查流程,强调需结合日志分析、温度控制及重复测试确保数据可靠性,为功耗优化提供系统化解决方案。

1459

Hibernate缓存清除

<br />一、Hibernate一级缓存<br />(1)hibernate支持两个级别的缓存,默认只支持一级缓存;<br />(2)每个Session内部自带一个一级缓存;<br />(3)某个Session被关闭时,其对应的一级缓存自动清除;<br />(4)save、update、saveOrupdate、load、get、list、iterate、lock方法都会向缓存中存对象.<br />(5)可以从缓存中读数据的只有: get、load、iterate<br />(6)Query对象默认情况下

ksqqxq的专栏 843

Pytorch入门实战(2)-使用BP神经网络实现MNIST手写数字识别

上一篇:Pytorch入门实战(1) - 实现线性回归 涉及知识点 Pytorch nn.Module的基本使用 Pytorch nn.Linear的基本用法 PytorchVision Transforms的基本使用 Pytorch中DataLoader的基本用法 Pytorch详解NLLLoss和CrossEntropyLoss 如何确定神经网络的层数和隐藏层神经元数量 本文内容 本文将会使用BP神经网络(就是最普通的神经网络)实现一个MNIST手写数据集的实现。话不多说,直接开始。 首先先导入需要的包

iioSnail的博客 6617

AI智算-K8s如何利用IB RDMA网络加速大模型分布式训练

在AI人工智能领域,大模型的微调是提升性能不可或缺的一环。通过结合InfiniBand RDMA网络的高速互联、Kubernetes的云原生容器化部署,以及智能算力调度平台,可以打造一个高效、灵活且可扩展的分布式训练环境。

Kason_iWiki 815

Hibernate清理缓存

 在默认情况下,session会在下面的时间点清理缓存1 当应用程序调用net.sf.hibernate.Transaction的commit()方法时,commit()方法先清理缓存,然后再看数据库提交事务2 当调用session的find()或者iterator()时,如果缓存中持久化对象的属性发生了变化,就会先清理缓存,以保证查询结果能反映持久化对象的最新状态。3 当应用程序

Roger★L☆M☆J★ 2453

Sigrity Power DC Resitance Network Model Generation模式生成电阻SPICE模型操作指导

Sigrity Power DC Resitance Network Model Generation模式是用于提取负载每个pin电阻SPICE模型的,结果以spice网表形式展现,仍然以Motherboard.spd为例进行说明。目的是模拟实际情况,via的孔壁电镀1mil,中间是空心的,让via不完全被填充金属成为实心via。Upper/lower Tolerance:上下公差,设置为5%,也就是压降允许的范围。P/F Mode:通过/失败模式,选择Worst,最差的情况。

weixin_54787054的博客 416

Hibernate之缓存管理

Hibernate是一个开放源代码的对象关系映射框架,从今天开始我将会和大家一起谈论Hibernate,我会从简单到复杂慢慢进行解剖,话不说多了,马上上我们来进入Hibernate的学习吧:         Hibernate是一个开放源代码的对象关系映射框架,对JDBC实现了非常轻量级的对象封装,一下列出了Hibernate的六大核心接口:                   Session

sharme的专栏 915

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Hibernate的二级缓存管理

1. 首先让我们看看Hibernate的Session缓存的管理 对Session的各种读写方法的调用,会将Entity实例加入到Session缓存中可以调用evict()方法将Entity实例从Session缓存中移除可以调用clear()方法将所有Entity实例从Session缓存中移除 2. 二级缓存的管理 二级缓存类似Session缓存,SessionFactory也有一组

成长的足迹 2047

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Hibernate是如何处理事务的?请描述一下Hibernate的事务管理。Hibernate中的缓存机制是怎样的?如何配置和使用缓存?

一级缓存是Hibernate为每个Session维护的缓存,它是事务范围的缓存,即每个Session都有自己的一级缓存。当Session进行一些数据库操作时(例如保存、更新、删除、加载等),Hibernate会首先在一级缓存中查找是否存在相应的对象,如果存在则直接返回,否则才进行数据库查询。这些操作都是在事务的上下文中进行的,如果事务被回滚,那么这些操作对数据库的影响将被撤销。一级缓存的生命周期和Session的生命周期一致,当Session关闭或清理时,一级缓存中的对象也会被清除。

Aaron的博客 1418

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Hibernate缓存管理

Hibernate缓存管理 1.Hibernate缓存分类 1、一级缓存:Session缓存,它是属于事物范围的缓存,这一级别的缓存由Hibernate管理的,一般情况下无需干预。 2、二级缓存:SessionFactory级别的缓存,它是属于进程范围或群集范围的缓存,这一级别的缓存可以进行配置和更改,并且可以动态加载和卸载。 2.Hibernate缓存管理 1、一级缓存

xiaomin1991222的专栏 186

Hibernate 缓存管理的介绍

缓存管理   Hibernate 中提供了两级Cache,第一级别的缓存是Session级别的缓存,它是属于事务范围的缓存。这一级别的缓存由hibernate管理的,一般情况下无需进行干预;第二级别的缓存是SessionFactory级别的缓存,它是属于进程范围或群集范围的缓存。这一级别的缓存可以进行配置和更改,并且可以动态加载和卸载。 Hibernate还为查询结果提供了一个查询缓存,它依赖于

重心开始,重新开始 690

【Hibernate笔记整理七】缓存机制与事务管理

缓存 是一种优化的方式,将数据存入到内存中,使用的时候会直接从这块内存中获取,不用通过存储源,这块内存我们把它称之为 缓存。 在 Hibernate 中提供了很多种优化手段,比如缓存机制、抓取策略等。他们的目的只有一个,就是尽可能的提高性能。本章主要讲解 Hibernate 中的第一个优化手段 —— 缓存机制。

小异常的博客 576

SSH框架之Hibernate的集合缓存、查询缓存、项目中的session管理方式

一、集合缓存 1、不使用集合缓存: 2、使用集合缓存: 1)配置hibernate.cfg.xml 2)测试: 二、补充二级缓存、集合缓存配置 三、查询缓存 list() 默认情况只会放入缓存,不会从一级缓存中取! 使用查询缓存,可以让list()查询从二级缓存中取! 1、配置hibernate.cfg.xml 2、测试类 四、项目中的session管理方式

一点一滴 2218
上一篇: Hibernate中对象的三种状态,以及三种状态间的转化方法
下一篇: 使用hibernate的优点
南方的北方
博客等级 码龄14年 7粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值