版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、域对象在持久化层的三种状态,教学内容 Session的缓存的作用 Session清理缓存的时间点 对象的临时状态、持久化状态和游离状态 用Session的update()方法使游离对象转变为持久化对象,理解Session的缓存,当Session的save()方法持久化一个Customer对象时,Customer对象被加入到Session的缓存中,以后即使应用程序中的引用变量不再引用Customer对象,只要Session的缓存还没有被清空,Customer对象仍然处于生命周期中。 当Session的load()方法试图从数据库中加载一个Customer对象时,Session先判断缓存中是否已经
2、存在这个Customer对象,如果存在,就不需要再到数据库中检索。,理解Session的缓存,tx = session.beginTransaction(); Customer c1=new Customer(Tom,new HashSet(); /Customer对象被持久化,并且加入到Session的缓存中 session.save(c1); Long id=c1.getId(); /c1变量不再引用Customer对象 c1=null; /从Session缓存中读取Customer对象,使c2变量引用Customer对象 Customer c2=(Customer)session.loa
3、d(Customer.class,id); mit(); /关闭Session,清空缓存 session.close(); /访问Customer对象 System.out.println(c2.getName(); / c2变量不再引用Customer对象,此时Customer对象结束生命周期。 c2=null;,理解Session的缓存,tx = session.beginTransaction(); Customer c1=(Customer)session.load(Customer.class,new Long(1); Customer c2=(Customer)session.lo
4、ad(Customer.class,new Long(1); System.out.println(c1=c2); mit(); session.close();,Session的缓存的作用,(1)减少访问数据库的频率。应用程序从内存中读取持久化对象的速度显然比到数据库中查询数据的速度快多了,因此Session的缓存可以提高数据访问的性能。 (2)保证缓存中的对象与数据库中的相关记录保持同步。当缓存中持久化对象的状态发生了变换,Session并不会立即执行相关的SQL语句,这使得Session能够把几条相关的SQL语句合并为一条SQL语句,以便减少访问数据库的次数,从而提高应用程序的性能。,S
5、ession清理缓存,清理缓存是指按照缓存中对象的状态的变化来同步更新数据库 以下程序代码对Customer的name属性修改了两次: tx = session.beginTransaction(); Customer customer=(Customer)session.load(Customer.class, new Long(1); customer.setName(Jack); customer.setName(Mike); mit(); 当Session清理缓存时,只需执行一条update语句: update CUSTOMERS set NAME= Mike where ID=1;,
6、清理缓存的时间点,Session会在下面的时间点清理缓存: 当应用程序调用net.sf.hibernate.Transaction的commit()方法的时候,commit()方法先清理缓存,然后再向数据库提交事务。 当应用程序调用Session的find()或者iterate()时,如果缓存中持久化对象的属性发生了变化,就会先清理缓存,以保证查询结果能反映持久化对象的最新状态。 当应用程序显式调用Session的flush()方法的时候。,Hibernate的二级缓存结构,Hibernate提供了两级缓存,第一级缓存是Session的缓存。由于Session对象的生命周期通常对应一个数据库事
7、务或者一个应用事务,因此它的缓存是事务范围的缓存。第一级缓存是必须的,不允许而且事实上也无法被卸除。在第一级缓存中,持久化类的每个实例都具有惟一的OID。 第二级缓存是一个可插拔的缓存插件,它由SessionFactory负责管理。由于SessionFactory对象的生命周期和应用程序的整个进程对应,因此第二级缓存是进程范围或群集范围的缓存。这个缓存中存放的是对象的散装数据。第二级缓存是可选的,可以在每个类或每个集合的粒度上配置第二级缓存。,Hibernate的二级缓存结构,2级缓存是可配置的插件,Hibernate的第2级缓存是可配置的插件,允许采用以下类型的插件 EHCache: 可以作
8、为进程范围内的缓存,存放的数据的物理介质可以是内存或者硬盘,对hibernate的查询缓存提供了支持 OSCache: 可以作为进程范围内的缓存,存放的数据的物理介质可以是内存或者硬盘,提供了丰富的缓存过期策略,对hibernate的查询缓存提供了支持 SwarmCache:可以作为机群范围内的缓存,但不支持Hibernate查询缓存 JBossCache:可以作为机群范围内的缓存,支持事物型并发访问策略,支持Hibernate查询缓存,2级缓存的策略,进程级别 Hibernate还允许在类和集合的粒度上设置第2级缓存,在映射文件中,元素中都一个子元素,这个子元素可用来配置第2级缓存 集群级别
9、 配置集群级别的2级缓存,只能使用JBossCache,在Hibernate应用中Java对象的状态,临时状态(transient):刚刚用new语句创建,还没有被持久化,不处于Session的缓存中。处于临时状态的Java对象被称为临时对象。 持久化状态(persistent):已经被持久化,加入到Session的缓存中。处于持久化状态的Java对象被称为持久化对象。 游离状态(detached):已经被持久化,但不再处于Session的缓存中。处于游离状态的Java对象被称为游离对象。,对象的状态转换图,Customer对象的状态转换过程,用Session的update()方法关联游离对象
10、,Customer customer=new Customer(); customer.setName(Tom); Session session1=sessionFactory.openSession(); Transaction tx1 = session1.beginTransaction(); session1.save(customer); mit(); session1.close(); /此时Customer对象变为游离对象 Session session2=sessionFactory.openSession(); Transaction tx2 = session2.beginTransaction(); customer.setName(Linda) /在和session2关联之前修改Customer对象的属性 session2.update(customer); customer.setName(Jack); /在和session2关联之后修改Customer对象的属性 mit(); session2.close();,Session的update()方法,Session的update()方法完成以下操作: (1)把Customer对象重新加入到Session缓存中,使它变为持久化对
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 半导体封装质量工程师岗位招聘考试试卷及答案
- 钙化病变标准化治疗策略(冠脉钙化 新指南完整版)
- 心力衰竭合并呼吸衰竭患者护理查房
- 上海市五爱中学2026年高考化学试题实战演练仿真卷含解析
- 弓形虫感染新生儿发育里程碑监测与异常识别
- 贵州省黔西县2026届高考化学试题命题比赛模拟试卷(2)含解析
- 四川省成都市成外2026年高三阶段性测试(二)(4月)化学试题试卷含解析
- 2026劳动保障考试题及答案
- 2025年脑机接口与康复机器人的人机交互优化
- 2026浙江安邦护卫安全服务有限公司招聘1人备考题库及答案详解(网校专用)
- 2025年希望杯IHC-三年级真题(含答案)
- 胶带输送机司机考试题含答案
- 农投集团笔试题目及答案
- 六化安全培训课件
- 碎石加工设备安装与调试方案
- 京瓷哲学的培训课件
- 淋膜基础知识培训课件
- 《电动汽车储能系统原理与维修》课件-项目四 北汽新能源EV200动力蓄电池
- 2023RDPAC行业行为准则
- 2025年云南省高考化学试题(学生版+解析版)
- 农药污染土壤的修复技术
评论
0/150
提交评论