详解缓存之Hibernate

详解缓存之Hibernate

ID:39250687

大小:3.54 MB

页数:61页

时间:2019-06-28

详解缓存之Hibernate_第1页
详解缓存之Hibernate_第2页
详解缓存之Hibernate_第3页
详解缓存之Hibernate_第4页
详解缓存之Hibernate_第5页
资源描述:

《详解缓存之Hibernate》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Hibernate缓存深入详解大纲Hibernate缓存概述1Hibernate一级缓存(Session缓存)23Hibernate二级缓存4二级缓存的高级应用(分布式缓存)5查询缓存1-1:Hibernate缓存概述Hibernate缓存机制对Hibernate的性能发挥一直处于一个极其重要的作用,它是持久层性能提升的关键。hibernate缓存在应用系统中的位置Hibernate缓存介于Hibernate应用和数据库之间,缓存中存放了数据库数据的拷贝。其作用是减少访问数据库的频率,从而提高应用的运行性能。Hibernate在进行读取

2、数据的时候,根据缓存机制在相应的缓存中查询,如果在缓存中找到了需要的数据(我们把这称做“缓存命中”),则就直接把命中的数据作为结果加以利用,避免的了建立数据库查询的性能损耗。1-2:Hibernate缓存分类Hibernate提供了两级缓存:一级缓存:Session级别的缓存二级缓存:SessionFactory级别的全局缓存Hibernate的这两级缓存都位于持久化层,存放的都是数据库数据的拷贝。那么它们之间的区别是什么呢?为了理解二者的区别,需要深入理解持久化层的缓存的一个特性:缓存的范围。1-3:缓存的范围(1)缓存的范围决定了缓

3、存的生命周期以及可以被谁访问。缓存的范围分为三类。事务范围缓存只能被当前事务访问。缓存的生命周期依赖于事务的生命周期,当事务结束时,缓存也就结束生命周期。缓存的介质是内存。事务可以是数据库事务或者应用事务,每个事务都有独自的缓存,缓存内的数据通常采用相互关联的的对象形式。一级缓存就属于事务范围。1-3:缓存的范围(2)进程范围缓存被进程范围内的所有事务共享。这些事务有可能并发访问缓存,因此必须对缓存采取必要的事务隔离机制。缓存的生命周期依赖于进程的生命周期,进程结束时,缓存也就结束了生命周期。它的物理介质可以是内存或硬盘。1-3:缓

4、存的范围(3)集群范围在集群环境中,缓存被一个机器或者多个机器的进程共享。缓存中的数据被复制到集群环境中的每个进程节点,进程间通过远程通信来保证缓存中的数据的一致性,缓存中的数据通常采用对象的松散数据形式。持久化层的第二级缓存就存在于进程范围或集群范围。大纲Hibernate缓存简介1Hibernate一级缓存(Session缓存)23Hibernate二级缓存查询缓存4二级缓存的高级应用(分布式缓存)52-1:理解一级缓存(1)Session具有一个缓存,是一块内存空间,在这个内存空间存放了相互关联的java对象,这种位于Sessi

5、on缓存内的对象也被称为持久化对象,Session负责根据持久化对象的状态变化来同步更新数据库。Session的缓存是内置的,不能被卸除的,也被称为Hibernate的第一级缓存。在正常的情况下一级缓存是由Hibernate自动维护的,无需人工干预。session缓存中对象的生命周期依赖session实例2-1:理解一级缓存(2)(1)当应用程序调用Session接口的save()、update()、saveOrUpdate()时,如果Session缓存中还不存在相应的对象,Hibernate就会把该对象加入到第一级缓存中。(2)当调用

6、Session接口的load()、get()以及Query查询接口的list()、iterator()方法时,如果Session缓存中存在相应的对象,就不需要到数据库中检索。(3)当调用Session的close()时,Session缓存就被清空。2-2:Session接口的用法(1)Session接口是Hibernate向应用程序提供的操纵数据库的最主要的接口,它提供了基本的保存、更新、删除和加载等方法。Java对象在Hibernate持久化层的状态:临时状态:刚用new语句创建,还没有被持久化,并且不处于session缓存中(处于临

7、时状态的对象成为临时对象)持久化状态:已经被持久化,并且加入到session缓存中。处于持久化状态的对象称为持久化对象删除状态:不再处于session缓存中,并且session已经计划将其从数据库中删除游离状态:已经被持久化,但不再处于session缓存中。处于游离状态的对象称为游离对象2-2:Session接口的用法(2)save()和persist()save()方法把一个临时对象加入到Session缓存中,并持久化该临时对象,计划执行一个insert语句。persist()和save()方法类似,也能把把一个临时对象转变为持久化对

8、象。区别:(1)persist()是在Hibernate3版本中才出现。在使用代理主键的情况下persist()方法不保证立即为持久化对象的ID赋值,而是有可能在Session清理缓存时才为ID赋值。(2)

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。