网站大量收购闲置独家精品文档,联系QQ:2885784924

Hibernat的e应用_课堂.ppt

  1. 1、本文档共119页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Hibernat的e应用_课堂

* Hibernate的二级缓存(1) Hibernate的二级缓存策略的一般过程如下: 1) 条件查询的时候,总是发出一条select * from table_name where …. (选择所有字段)这样的SQL语句查询数据库,一次获得所有的数据对象。 2) 把获得的所有数据对象根据ID放入到第二级缓存中。 3) 当Hibernate根据ID访问数据对象的时候,首先从 Session一级缓存中查;查不到,如果配置了二级缓 存,那么从二级缓存中查;查不到,再查询数据库, 把结果按照ID放入到缓存。 4) 删除、更新、增加数据的时候,同时更新缓存。 * Hibernate的二级缓存(2) Hibernate本身并未提供二级缓存的产品化实现(只提供了一个基于HashTable的简单缓存以供调试)。 这里使用的是第三方缓存组件:EHcache.Hibernate的二级缓存实现需要进行以下配置(Hibernate3): 首先在hibernate.cfg.xml内添加: property name=vider_class org.hibernate.cache.EhCacheProvider /property?? property name=hibernate.cache.use_query_cache true /property?? 然后在映射文件中添加: cache usage=read-only/?? 测试上面代码:控制台输出多了这样一句[ WARN] (CacheFactory.java:43) - read-only cache configured for mutable class: hibernate.TUser,二级缓存启用成功!!???? * Hibernate的二级缓存(3) java 代码 public class Test {???? ???? ?????? public void executeQuery(){???? ????????????? List list = new ArrayList();???? ???????????? Session session = HibernateSessionFactory.getSession();???? ???????????? Query query = session.createQuery(“from TUser t”);???? ???????????? query.setCacheable(true);//激活查询缓存???? ???????????? list = query.list();???? ???????????? session.close();???? ?? ?????? }???? ?????? public void get(){???? ?? ????????? Session session = HibernateSessionFactory.getSession();???? ???????????? TUser t = (TUser)session.get(hibernate.TUser, 2);???? ???????????? System.out.println(t.getName());???? ???????????? session.close();???? ?? ???? }???? ?? }? 测 试:控制台只输出一条SQL语句:Hibernate: select tuser0_.id as id0_, tuser0_.name as name0_, tuser0_.sex as sex0_ from test.t_user tuser0_(即Query query = session.createQuery(from TUser t)这句代码所对应的SQL).?? executeQuery()方法与get()方法使用的是不同的Session!!可是 executeQuery()方法与get()方法只对数据库进行了一次操作,这就是二级缓存在起作用了. * 查询缓存概述 Hibernate的二级缓存策略是针对ID查询的策略,和对象ID密切相关,那么对于条件查询就不怎么适用了。对于这种情况的存在,Hibernate引入了“查询缓存”,在一定程度上缓解这个问题。 启用查询缓存后,第一次执行查询时,Hibernate会把查询结果放入查询缓存中。以后再次执行该查询语句时,只需从缓存中获得查询结果,从而提高查询性能。 查询缓存依赖二级缓存。 * 启用查询缓存

文档评论(0)

liwenhua00 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档