第4章:Hibernate缓存、对象状态.ppt
《第4章:Hibernate缓存、对象状态.ppt》由会员分享,可在线阅读,更多相关《第4章:Hibernate缓存、对象状态.ppt(32页珍藏版)》请在三一办公上搜索。
1、第四章,Hibernate缓存、对象状态,回顾,HQL的全称是?和SQL相比,HQL有哪些特点?HQL语句为:select jd.jdid,jd.jd from TblJd jd。怎样获得并显示查询结果?使用?做占位符的参数查询,怎样设置参数的值?命名参数查询的语法是?怎样创建Criteria查询对象?,预习检查,Hibernate有几种缓存机制?Hibernate的几种缓存机制各是什么?,理解Hibrnate的缓存机制理解对象的状态,本章目标,Hibernate的缓存分为:一级缓存,单个会话的对象缓存。二级缓存,可插拔的缓存插件,Hibernate的缓存,当Session加载或保存一个对象时
2、,如果Session的缓存中不存在相应的对象,hibernate就会把该对象加入到一级缓存中。当再次通过Session加载相同OID的对象时,Hibernate将直接从Session的缓存中获取。当Session关闭时,缓存将被清空。,/第一次加载时将产生SQL访问数据库Customer cusa=(Customer)session.get(Customer.class,1l);/第二次加载同样的Customer时Hibernate将从Session中获取Customer cusb=(Customer)session.get(Customer.class,1l);/cusa和cusb应当是同一
3、对象If(cusa=cusb)System.out.println(“同一个对象!”);/缓存被清空session.close();,理解Session缓存,减少访问数据库的频率。应用程序从内存中获取对象明显快于从数据库中查找。保证缓存中的对象与数据库相关的记录同步。当处于缓存中的对象的属性发生改变时,Session不会立即更新数据库,它可以将多次更新合并处理后产生一条更新语句。,Customer customer=(Customer)session.get(Customer.class,1);customer.setName(jack);customer.setName(mike);sess
4、ion.update(customer);/以上只会产生一条sql语句。update Customer set name=mike.,Session缓存的作用,Hibernate会在特定的时间自动同步缓存与数据库当人为提交事务时,commit()方法先清理缓存,然后再向数据库提交事务。当执行session的查询方法时,如果缓存中持久化对象的属性发生了变化,就会先清理缓存,以保证查询结果能反映持久化对象的最新状态。当执行session.flush时,注意:关闭Session时,Hibernate不会执行缓存同步。,同步Session缓存,evict(Object o):从缓存中清除指定的对象cl
5、ear():清空缓存中的所有对象,管理一级缓存,二级缓存是一个可以插拔的缓存插件,它由SessionFactory负责管理,由于SessionFactory对象的生命周期和应用程序的生命周期对应,因此二级缓存是进程范围或群集范围的缓存。缓存中存放的是对象的散装数据而不是对对象的引用。可以被一个SessionFactory的所有sesison共享二级缓存是可选的,可以在每个类或每个集合的粒度上配置二级缓存。,Hibernate二级缓存,应用程序,一级缓存(事务范围内的Session缓存),二级缓存(进程范围或群集范围的缓存),数据库,写,读,写,读,如果在事务范围的缓存(第1级缓存)中没有查询到
6、相应的数据,还可以到进程范围或群集范围的缓存(第2级缓存)内查询,如果在进程范围或群集范围的缓存内也没有找到该数据,那么就只好查询数据库。,Hibernate二级缓存的执行机制,二级缓存是可配置的插件,Hibernate允许选用以下类型的缓存插件EHCacheOSCacheSwarmCacheJBossCache这些插件都是由第三方提供的。Hibernate2以前提倡用 EHCacheHibernate3后提倡用OSCache,Hibernate二级缓存的第三方实现,把oscache-2.1.jar加入到当前应用的classpath中。修改hibernate.cfg.xml文件开启二级缓存。t
7、rueorg.hibernate.cache.OSCacheProvider true,使用OSCache配置二级缓存,挎贝oscache.properties文件到类路径(项目工程的src目录下),这个文件在Hibernate安装目录的etc下。关于缓存中存放多少数据,Hibernate是不关心的,全部由OSCache来完成。在oscache.properties中,有如下的参数配置:cache.capacity=1000 这个数值代表放入缓存的对象数量,这个数量根据用户机器的内存来配置,一般只需要配置这个参数即可。,使用OSCache配置二级缓存,指定哪些实体类使用缓存。经过第一步缓存是启
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Hibernate 缓存 对象 状态

链接地址:https://www.31ppt.com/p-5334759.html