配置Hibernate二级缓存剖析
创始人
2024-06-07 15:00:46
0

Hibernate有很多值得学习的地方,这里我们主要介绍配置Hibernate二级缓存,包括介绍在Spring托管的Hibernate二级缓存等方面。

使用EhCache配置Hibernate二级缓存:

配置Hibernatee二级缓存准备:

1)把ehcache-1.2.3.jar加入到当前应用的classpath中。

2)在hibernate.cfg.xml文件中加入EhCache缓存插件的提供类。

  1.  name="hibernate.cache.provider_class">     
  2. org.hibernate.cache.EhCacheProvider     
  3.    

3)挎贝ehcache.xml文件到类路径(项目工程的src目录下),这个文件在Hibernate安装目录的etc下。

  1.  version="1.0" encoding="utf-8"?> 
  2.  
  3. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
  4.  
  5.  name="org.qiujy.domain.cachedemo.Category" table="categories"> 
  6.  
  7. //配置缓存,必须紧跟在class元素后面对缓存中的Category对象采用读写型的并发访问策略  
  8.  
  9.  usage="read-write"/> 
  10.  
  11.  name="id" type="java.lang.Long"> 
  12.  name="id" /> 
  13.  class="native" /> 
  14.  
  15.  
  16.  name="version" column="version" type="java.lang.Long" /> 
  17.  
  18.  name="name" type="java.lang.String"> 
  19.  name="name" length="32" not-null="true"/> 
  20.  
  21.  
  22.  name="description" type="java.lang.String"> 
  23.  name="description" length="255"/> 
  24.  
  25.  
  26.  name="products" table="products" cascade="all" inverse="true"> 
  27.  
  28.  usage="read-write"/> 
  29.  
  30.  column="categoryId" not-null="true"/> 
  31.  class="org.qiujy.domain.cachedemo.Product"/> 
  32.  
  33.  
  34.  
  35.  

Product.hbm.xml

  1.  version="1.0" encoding="utf-8"?> 
  2. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
  3.  
  4.  name="org.qiujy.domain.cachedemo.Product" table="products"> 
  5.  
  6.  usage="read-write"/> 
  7.  
  8.  name="id" type="java.lang.Long"> 
  9.  name="id" /> 
  10.  class="native" /> 
  11.  
  12.  
  13.  name="version" column="version" type="java.lang.Long" /> 
  14.  
  15.  name="name" type="java.lang.String"> 
  16.  name="name" length="32" not-null="true"/> 
  17.  
  18.  
  19.  name="description" type="java.lang.String"> 
  20.  name="description" length="255"/> 
  21.  
  22.  
  23.  name="unitCost" type="java.lang.Double"> 
  24.  name="unitCost" /> 
  25.  
  26.  
  27.  name="pubTime" type="java.util.Date"> 
  28.  name="pubTime" not-null="true" /> 
  29.  
  30.  
  31.  name="category" 
  32. column="categoryId" 
  33. class="org.qiujy.domain.cachedemo.Category" 
  34. cascade="save-update" 
  35. not-null="true"> 
  36.  
  37.  
  38.  
  39.  

编辑ehcache.xml文件:

  1.  
  2.  path="c:\\ehcache\"/> 
  3.  
  4. maxElementsInMemory="10000" 
  5. eternal="false" 
  6. timeToIdleSeconds="120" 
  7. timeToLiveSeconds="120" 
  8. overflowToDisk="true"   
  9. /> 
  10.  
  11.  
  12.  name="org.qiujy.domain.cachedemo.Category" 
  13. maxElementsInMemory="100" 
  14. eternal="true" 
  15. timeToIdleSeconds="0" 
  16. timeToLiveSeconds="0" 
  17. overflowToDisk="false" 
  18. /> 
  19.  
  20.  
  21.  name="org.qiujy.domain.cachedemo.Category.products" 
  22. maxElementsInMemory="500" 
  23. eternal="false" 
  24. timeToIdleSeconds="300" 
  25. timeToLiveSeconds="600" 
  26. overflowToDisk="true" 
  27. /> 
  28.  
  29.  name="org.qiujy.domain.cachedemo.Product" 
  30. maxElementsInMemory="500" 
  31. eternal="false" 
  32. timeToIdleSeconds="300" 
  33. timeToLiveSeconds="600" 
  34. overflowToDisk="true" 
  35. /> 
  36.  
  37.  

在Spring托管的Hibernate二级缓存
1.在spring的配置文件中,hibernate部分加入 xml 代码 org.hibernate.cache.EhCacheProvider true
2.为HBM表设置cache策略 xml 代码
3.在DAO中,调用find方法查询之前,设置使用缓存 Java代码 getHibernateTemplate().setCacheQueries(true);

补充: 如果不设置“查询缓存”,那么Hibernate只会缓存使用load()方法获得的单个持久化对象,如果想缓存使用findall()、list()、Iterator()、createCriteria()、createQuery()等方法获得的数据结果集的话,就需要设置 hibernate.cache.use_query_cache true 才行。

【编辑推荐】

  1. Hibernate3.1简单描述
  2. Hibernate save基础简介
  3. 浅析Hibernate 3二级缓存基础
  4. Hibernate流行架构浅析
  5. Hibernate update浅谈

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...