Hibernate学习笔记之EHCache的配置.doc_第1页
Hibernate学习笔记之EHCache的配置.doc_第2页
Hibernate学习笔记之EHCache的配置.doc_第3页
Hibernate学习笔记之EHCache的配置.doc_第4页
Hibernate学习笔记之EHCache的配置.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Hibernate默认二级缓存是不启动的,启动二级缓存(以EHCache为例)需要以下步骤:1、添加相关的包:Ehcache.jar和commons-logging.jar,如果hibernate.jar中含有ehcache就不用添加Ehcache.jar,commons-logging.jar是用来实现Ehcache写日志的。2、配置hibernate.cfg.xml文件view plaincopy to clipboardprint?01. 02. 03. true 04. org.hibernate.cache.EhCacheProvider 05. true 06. true 07. !- ehcache2.xml/指定ehcache配置文件 - 08. 09. 10. 11. 12. true org.hibernate.cache.EhCacheProvider true true !- ehcache2.xml/指定ehcache配置文件 - 3、添加配置文件-ehcache.xml,一般放在classpath或src下,也可以自定义文件名和路径,并在hibernate.cfg.xml中通过 vider_configuration_file_resource_path参数指定。view plaincopy to clipboardprint?01. 02. 03. 09. 其中:maxElementsInMemory=“10000” /Cache中最多允许保存的数据对象的数量external=“false” /缓存中对象是否为永久的,如果是,超时设置将被忽略,对象从不过期 timeToIdleSeconds=“1000” /缓存数据钝化时间(设置对象在它过期之前的空闲时间) timeToLiveSeconds=“1000” /缓存数据的生存时间(设置对象在它过期之前的生存时间) overflowToDisk=“false” / /内存不足时,是否启用磁盘缓存 memoryStoreEvictionPolicy=LRU /内存不足时数据对象的清除策略ehcache中缓存的3种清空策略: FIFO(first in first out):先进先出 LFU( Less Frequently Used):一直以来最少被使用的。如上面所讲,缓存的元素有一个hit属性,hit值最小的将会被清出缓存。 LRU(Least Recently Used):最近最少使用的,缓存的元素有一个时间戳,当缓存容量满了,而又需要腾出地方来缓存新的元素的时候,那么现有缓存元素中时间戳离当前时间最远的元素将被清出缓存。4、配置相关实体的缓存策略view plaincopy to clipboardprint?01.Entity 02.Table(name=cui_user) 03.Cache(usage=CacheConcurrencyStrategy.READ_WRITE)/可读可写 04.public class TUser 05.private Integer id; 06.private String name; 07. 08.Id /标识主键 09.GeneratedValue(strategy=GenerationType.AUTO)/指定主键值的产生策略由Hibernate根据数据库字段选择 10.public Integer getId() 11. return id; 12. 13.public void setId(Integer id) 14. this.id = id; 15. 16.public String getName() 17. return name; 18. 19.public void setName(String name) 20. = name; 21. 22. EntityTable(name=cui_user)Cache(usage=CacheConcurrencyStrategy.READ_WRITE)/可读可写public class TUser private Integer id;private String name;Id/标识主键GeneratedValue(strategy=GenerationType.AUTO)/指定主键值的产生策略由Hibernate根据数据库字段选择public Integer getId() return id;public void setId(Integer id) this.id = id;public String getName() return name;public void setName(String name) = name; 最后还是需要测试的。通过id缓存的例子如下:view plaincopy to clipboardprint?01.public static void main(String args) 02. /单对象缓存 03. Session session=HibernateSessionFactory.getSession(); 04. TUser user=(TUser)session.load(TUser.class, 200); 05. System.out.println(1-+user.getName(); 06. session.close(); 07. 08. try 09. Thread.sleep(2000);/休眠2秒 10. catch (InterruptedException e) 11. e.printStackTrace(); 12. 13. 14. session=HibernateSessionFactory.getSession(); 15. TUser user2=(TUser)session.load(TUser.class, 200); 16. System.out.println(2-+user2.getName(); 17. session.close(); 18. public static void main(String args) /单对象缓存 Session session=HibernateSessionFactory.getSession();TUser user=(TUser)session.load(TUser.class, 200);System.out.println(1-+user.getName();session.close();try Thread.sleep(2000);/休眠2秒 catch (InterruptedException e) e.printStackTrace();session=HibernateSessionFactory.getSession();TUser user2=(TUser)session.load(TUser.class, 200);System.out.println(2-+user2.getName();session.close(); Hibernate生成的sql语句:Hibernate: select tuser0_.id as id0_0_, tuser0_.name as name0_0_ from cui_user tuser0_ where tuser0_.id=?1-cuisea2-cuisea可见第二次读取TUser对象并没有去数据库查询,说明是从缓存里读取的,ehcache配置成功。查询缓存(必须在hibernate.cfg.xml中配置hibernate.cache.use_query_cache为true)的例子如下:view plaincopy to clipboardprint?01.public static void main(String args) 02. Session session=HibernateSessionFactory.getSession(); 03. Query query=session.createQuery(from TUser);/使用Query缓存结果集 04. query.setCacheable(true);/必须设置 05. List list=query.list(); 06. for (TUser user : list) 07. System.out.println(1-+user.getName(); 08. 09. 10. /另外开启一个事务 11. session=HibernateSessionFactory.getSession(); 12. query=session.createQuery(from TUser); 13. query.setCacheable(true);/必须设置 14. list=query.list(); 15. for (TUser user : list) 16. System.out.println(2-+user.getName(); 17. 18. public static void main(String args) Session session=HibernateSessionFactory.getSession();Query query=session.createQuery(from TUser);/使用Query缓存结果集query.setCacheable(true);/必须设置List list=query.list();for (TUser user : list) System.out.println(1-+user.getName(); /另外开启一个事务session=HibernateSessionFactory.getSession();query=session.createQuery(from TUser);query.setCacheable(true);/必须设置list=query.list();for (TUser user : list) System.out.println(2-+user.getName(); Hibernate生成的sql语句:Hibernate: select tuser0_.id as id0_, tuser0_.name a

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论