hibernate缓存机制一配置二级缓存就出异常

Hibernate 二级缓存缺少包出现的异常
Hibernate 二级缓存缺少包出现的异常
错误一:Java代码 Exception?in?thread?"main"?java.lang.NoClassDefFoundError:?org/apache/commons/logging/LogFactory
at?net.sf.ehcache.CacheManager.&clinit&(CacheManager.java:71)
at?org.hibernate.cache.EhCacheProvider.start(EhCacheProvider.java:131)
at?org.hibernate.cache.impl.bridge.RegionFactoryCacheProviderBridge.start(RegionFactoryCacheProviderBridge.java:72)
at?org.hibernate.impl.SessionFactoryImpl.&init&(SessionFactoryImpl.java:248)
at?org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1385)
at?com.bjsxt.hibernate.HibernateUtils.&clinit&(HibernateUtils.java:15)
at?com.bjsxt.hibernate.InitData.main(InitData.java:8) ?解决办法:下载:Common-logging.jar?错误二:Java代码 Exception?in?thread?"main"?java.lang.NoClassDefFoundError:?edu/emory/mathcs/backport/java/util/concurrent/BlockingQueue
at?net.sf.ehcache.config.ConfigurationHelper.createCache(ConfigurationHelper.java:418)
at?net.sf.ehcache.config.ConfigurationHelper.createDefaultCache(ConfigurationHelper.java:334)
at?net.sf.ehcache.CacheManager.configure(CacheManager.java:306)
at?net.sf.ehcache.CacheManager.init(CacheManager.java:226)
at?net.sf.ehcache.CacheManager.&init&(CacheManager.java:213)
at?org.hibernate.cache.EhCacheProvider.start(EhCacheProvider.java:131)
at?org.hibernate.cache.impl.bridge.RegionFactoryCacheProviderBridge.start(RegionFactoryCacheProviderBridge.java:72)
at?org.hibernate.impl.SessionFactoryImpl.&init&(SessionFactoryImpl.java:248)
at?org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1385)
at?com.bjsxt.hibernate.HibernateUtils.&clinit&(HibernateUtils.java:15)
at?com.bjsxt.hibernate.InitData.main(InitData.java:8) ?解决办法:下载:backport-util-concurrent.jar
本文介绍的是
-2.0.14。 1.
2是在webwork2基础发展而来的,他也属于MVC框架。他有以下优点:
1那样跟servletAPI和s
from: http://blog.csdn.net/springinjava/archive//1345686.aspx
1,修改bin文件夹下面的catalina.bat文件,把如下内容
rem ----- Execute The Requested Command ------------
2常量的顺序如下:
-default.xml:该文件保存在
2-core-2.0.6.jar文件中。
-plugin.xml:该文件保存在
IBaseDao及其实现类BaseDaoHibernateImpl
package com.test.demo.dao.
Spring-MVC如何使用拦截器,官方文档只给出了非注解风格的例子。那么基于注解风格如何使用拦截器呢?
基于注解基本上有2个可使用的定义类,分别是DefaultAnnotationHandlerMapping和Annotatio
1. 请解释
3.2主键的生成方式中,native和identity方式的区别。
Native主键生成方式会根据不同的底层数据库自动选择Identity、Sequence、Hilo主键生成方式
特点:根据不同的底层
NHibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [com.test.Contract.Entities.JobManagementDat#JBID
【1】:将4个必须jar放在
\common\lib下面
commons-collections.jar commons-dbcp.jar commons-pool-1.5.2.jar mysql-connector-java-5.0.7-bin.jar
---------------------
运行监控Hocat专题:
hocat是howwe
的简称,由howwe.net浩为提供,运行原理:监控程序和
之间建立socket,定时进行心跳检查,如检查失败则启动新进程。
的拦截机制指的是,应用程序可以为Session或者SessionFactory设置拦截器。
会自动地在某些特定事件发生时,先调用这些拦截器进行反应。,如果没有
Powered by
[ RssXN(build:
070517 Asp.net 2.0)]
每隔1小时自动更新一次您现在的位置:&&&&&&&&&&&&文章内容
快捷导航:
hibernate事务,一级缓存,二级缓存
来源:中国IT实验室&&&【考试大:中国教育考试第一门户】&&&日
导读]考试大助您顺利通过JAVA认证考试考试!
  通过以上的介绍可以看出hibernate主要从以下几个方面来优化查询性能:
  1,降低访问数据库的频率,减少select语句的数目,实现手段有:使用迫切左外连接或迫切内连接;对延迟检索或立即检索设置批量检索数目;使用查询缓存。
  2,避免加载多余的应用程序不需要访问的数据,实现手段有:使用延迟加载策略;使用集合过滤。
  3,避免报表查询数据占用缓存,实现手段为利用投影查询功能,查询出实体的部分属性。
  4,减少select语句中的字段,从而降低访问数据库的数据量,实现手段为利用Query的iterate()方法。
  Query的iterate()方法首先检索ID字段,然后根据ID字段到hibernate的第一级缓存以及第二级缓存中查找匹配的 Customer对象,如果存在,就直接把它加入到查询结果集中,否则就执行额外的select语句,根据ID字段到数据库中检索该对象。
  Query query = session.createQuery("from Customer where age&30");
  Iterator result = query.iterate();
  对于经常使用的查询语句,如果启用了查询缓存,当第一次执行查询语句时,hibernate会把查询结果存放在第二级缓存中,以后再次执行该查询语句时,只需从缓存中获得查询结果,从而提高查询性能。如果查询结果中包含实体,第二级缓存只会存放实体的OID,而对于投影查询,第二级缓存会存放所有的数据值。
  查询缓存适用于以下场合:在应用程序运行时经常使用的查询语句;很少对与查询语句关联的数据库数据进行插入,删除,更新操作。
  对查询语句启用查询缓存的步骤如下:
  1,配置第二级缓存。
  2,在hibernate的配置文件中设置查询缓存属性:hibernate.cache.use_query_cache=true
  3,即使设置了缓存,在执行查询语句时仍然不会启用查询缓存,只有在调用query.setCacheable()后才启用缓存:
  Query query = session.createQuery("from Customer c where c.age & :age");
  query.setInteger("age", age):
  query.setCacheable(true);
  如果希望更加精粒度地控制查询缓存,可以设置缓存区域:query.setCacheRegion("customerQueries");
  hibernate提供了3种和查询相关的缓存区域:
  1,默认的查询缓存区域:net.sf.hibernate.cache.StandardQueryCache。
  2,用户自定义的查询缓存区域:如customerQueries。
  3,时间戳缓存区域:net.sf.hibernate.cache.UpdateTimestampCache。
  默认的查询缓存区域以及用户自定义的查询缓存区域都用于存放查询结果,而时间戳缓存区域存放了对于查询结果相关的表进行插入,更新,删除操作的时间戳。hibernate通过时间戳缓存区域来判断被缓存的查询结果是否过期。当应用进程对数据库的相关数据做了修改,hibernate会自动刷新缓存的查询结果。但是如果其它应用进程对数据库的相关数据做了修改,hibernate无法监测到这一变化,此时必须由应用程序负责监测这一变化(如通过发送和接收事件或消息机制),然后手工刷新查询结果。
  Query.setForceCacheRefresh(true)方法允许手工刷新查询结果,它使得hibernate丢弃查询缓存区域中己有的查询结果,重新到数据库中查询数据,再把查询结果存放在查询缓存区域中。
  一个session可以和多个事务对应:
  Transaction trans1 = session.beginTransaction();
  ... ...//数据库操作
  mit();//提交第一个事务
  session.disconnect();//释放数据库连接
  ... ...//执行一些耗时的操作,这段操作不属于任何事务
  session.reconnect();//重新获取数据库连接
  Transaction trans2 = session.beginTransaction();//开始第二个事务
  ... ...//数据库操作
  mit();//提交第二个事务
  注意:如果在执行session的一个事务时出现了异常,就必须立即关闭这个session,不能再利用这个session来执行其它的事务。
  许多数据库系统都有自动管理锁的功能,它们能根据事务执行的SQL语句,自动在保证事务间的隔离性与保证事务间的并发性之间做出权衡,然后自动为数据库资源加上适当的锁,在运行期间还会自动升级锁的类型,以优化系统的性能。
  对于普通的并发性事务,通过系统的自动锁定管理机制基本可以保证事务之间的隔离性,但如果对数据安全,数据库完整性和一致性有特殊要求,也可以由事务本身来控制对数据资源的锁定和解锁。
  数据库系统能够锁定的资源包括:数据库,表,区域,页面,键值(指带有索引的行数据),行(即表中的单行数据)。在数据库系统中,一般都支持锁升级,以提高性能。
  按照封锁程序,锁可以分为:共享锁,独占锁,更新锁。
  共享锁:用于读数据操作,它是非独占的,允许其它事务同时读取其锁定的资源,但不允许其它事务更新它。
  独占锁:也称排它锁,适用于修改数据的场合,它所销定的资源,其它事务不能读取也不能修改。
  更新锁:在更新操作的初始化阶段用来锁定可能要被修改的资源,这可以避免使用共享锁造成的死锁现象。
  许多的数据库系统能够自动定期搜索和处理死锁问题,当检测到锁定请求环时,系统将结束死锁优先级最低的事务,并且撤销该事务。
  应用程序中可以采用下面的一些方法尽量避免死锁:
  1,合理安排表访问顺序;
  2,使用短事务;
  3,如果对数据的一致性要求不高,可以允许脏读,脏读不需要对数据资源加锁,可以避免冲突;
  4,如果可能的话,错开多个事务访问相同数据资源的时间,以防止锁冲突。
  5,使用尽可能低的事务隔离级别。
  为了实现短事务,在应用程序中可以考虑使用以下策略:
  1,如果可能的话,尝试把大的事务分解为多个小的事务,然后分别执行,这保证每个小事务都很快完成,不会对数据资源锁定很长时间。
  2,应该在处理事务之前就准备好用户必须提供的数据,不应该在执行事务过程中,停下来长时间等待输入数据。
  数据库系统提供了四种事务隔离级别供用户选择:
  1,Serializable:串行化。
  2,Repeatable Read:可重复读。
  3,Read Commited:读己提交数据。
  4,Read Uncommited:读未提交数据。
  隔离级别越高,越能保证数据的完整性和一致性,但是对并发性能的影响也越大。对于多数应用程序,可以优先把数据库系统的隔离级别设为 ReadCommited,它能够避免脏读,而且具有较好的并发性能,尽管它会导致不可重复读,虚读和第二类丢失更新这些并发问题,在可能出现这类问题的个别场合,可以由应用程序采用悲观锁或乐观锁来控制。
来源:考试大-
责编:zj&&&
模板不存在,请添加模板后再生成!E:\wwwroot\www_233_com\Templets\three\Templets\soft\small\cont_b_st.htm
暂无跟贴,欢迎您发表意见
考试大Java认证评论排行
1.&&评论4条
2.&&评论2条
3.&&评论2条
4.&&评论2条
5.&&评论1条
6.&&评论1条
12345678910
12345678910
123456SCJP考试题310-025(第二套)19-50/1477SCJP考试题310-025(第二套)51-91/147
12345678910Hibernate二级缓存 ---- 入门示例 - 赵磊的博客 - ITeye技术网站
博客分类:
一. 我们使用oscache来演示 , 引入oscache的jar包到工程中.
二. 把下载的Hibernate压缩包中的
hibernate-3.2\etc\oscache.properties放入classpath中. 用默认设置就行了.
三.修改hibernate.cfg.xml
, 加入如下, 意思启用二级缓存, 指定使用OSCache这个实现.
&!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"&
&hibernate-configuration&
&session-factory &
&property name="show_sql"&true&/property&
&property name="hibernate.hbm2ddl.auto"&update&/property&
&property name="hibernate.dialect"&org.hibernate.dialect.MySQLInnoDBDialect&/property&
&property name="hibernate.connection.driver_class"&com.mysql.jdbc.Driver&/property&
&property name="hibernate.connection.url"&jdbc:mysql:///test&/property&
&property name="hibernate.connection.username"&root&/property&
&property name="hibernate.connection.password"&1234&/property&
&!-- 这行不写也行,默认就为true--&
&property name="cache.use_second_level_cache"&true&/property&
&!-- 对Query也开启缓存 ,由于命中率太低,建议不开 --&
&property name="cache.use_query_cache"&true&/property&
&!-- 指定使用OSCache这个实现--&
&property name="cache.provider_class"&org.hibernate.cache.OSCacheProvider&/property&
&!-- 打开统计信息--&
&property name="generate_statistics"&true&/property&
&mapping resource="dao/po/Department.hbm.xml"/&
&mapping resource="dao/po/Employee.hbm.xml"/&
&mapping resource="dao/po/Person.hbm.xml"/&
&mapping resource="dao/po/IdCard.hbm.xml"/&
&mapping resource="dao/po/Teacher.hbm.xml"/&
&mapping resource="dao/po/Student.hbm.xml"/&
&mapping resource="dao/po/User.hbm.xml"/&
&mapping resource="extends_test/extends_1/Person.hbm.xml"/&
&mapping resource="extends_test/extends_2/Person.hbm.xml"/&
&mapping resource="extends_test/extends_4/Person.hbm.xml"/&
&!-- 以下类被缓存--&
&class-cache class="dao.po.Person" usage="read-write"/&
&/session-factory&
&/hibernate-configuration&
四.usage的说明
"read-only"
po不能修改, 修改会抛异常
"read-write"
可对PO读写. 不怕并发修改
"nonstrict-read-write"
非严格的 读写, 并发修改不会问题,
一般用在能容忍出问题的环境.
"transactional"
有事务的,缓存 , oscache不是支持,
jboss 有实现.
五. 查询测试, 看看命中几次
package cache_
import org.hibernate.S
import org.hibernate.SessionF
import org.hibernate.stat.S
import dao.HibernateU
import dao.po.P
* 测试缓存
public class Test
public static void main(final String[] args)
final SessionFactory sf = HibernateUtil.getSessionFactory();
final Statistics s = sf.getStatistics();
System.out.println(s); //打印所有信息 监测SessionFactory
System.out.println("---------------");
System.out.println("放入:" + s.getSecondLevelCachePutCount()); //打印缓存的信息
System.out.println("命中:" + s.getSecondLevelCacheHitCount());
System.out.println("丢失:" + s.getSecondLevelCacheMissCount());
public static void query()
Session session =
for (int i = 0; i & 10; i++)
session = HibernateUtil.getSeesion();
final Person p1 = (Person) session.get(Person.class, 1);
session.close();
System.out.println(p1.getName());
放入:1命中:9丢失:1
浏览: 2634947 次
来自: 北京
很不错,对springMVC有了个大概的了解
正好需要使用,谢啦
谢谢!我再仔细看看
好贴!顶一个Hibernate一级缓存和二级缓存 - i吴亚辉 -
- ITeye技术网站
博客分类:
一级缓存
Hibernate框架一级缓存的特点:
1.它是hibernate自带的,不用我们手动配置。
2.它是以K-V对的方式存储数据,以KEY去获得PO对象。
3.只在同一个中session共享。
由于是hibernate自身就带有的,所以使用时不需要配置XML的工作,只要知道在同一个session中的存在相应的对象,那么它们都是共享的就可以了。
值得注意的是:
1.通过在做查询的时候,有几个查询方法支持一级Hibernate缓存,它们分别是:load(),get(),iterate(),其中要注意的是iterate方法只对实体对象查询才支持一级缓存。
2.在管理一级缓存的时候可以使用,clear()和evict(object)两个方法,clear是清空全部,evict是清除指定的缓存对象。要好好的使用这两个方法,特别是在缓存数据量大的情况下。
二级缓存
Hibernate框架二级缓存的特点:
1.同样是K-V对的方式存储数据,以ID作为KEY。
2.它的共享范围是SessionFactory。
3.它不是自带的,使用时需要导入第三方实现架包,并做相应配置。常用的有EHcache(官方推荐),JBossCache,OScache等等。
二级缓存和session级别的缓存一样都只对实体对象做缓存,不对属性级别的查询做缓存。
EHcache的简单使用:
先配置一个叫做:ehcache.xml文件
&?xml version="1.0" encoding="UTF-8"?&
&diskStore path="d:/cache" /&
&defaultCache maxElementsInMemory="1000" eternal="false"
overflowToDisk="true" timeToIdleSeconds="180" timeToLiveSeconds="300"
diskPersistent="false" diskExpiryThreadIntervalSeconds="120" /&
&cache name="longTime" maxElementsInMemory="100" eternal="false"
overflowToDisk="true" timeToIdleSeconds="1800"
timeToLiveSeconds="3000" diskPersistent="false"
diskExpiryThreadIntervalSeconds="120" /&
&/ehcache&
diskStore 作用是如果要缓存到硬盘上,这里填写缓存到硬盘的路径。
maxElementsInMemory 作用是最大缓存连接数,也就是说只能在缓存中保存这里设置的数量。
overflowToDisk 当设置为true的时候,如果内存不足时就把缓存保存到硬盘。
timeToIdleSeconds 最大空闲时间,超过了这个时间就算超时了。
timeToLiveSeconds 最大生存时间。
defaultCache 是默认调用的缓存模版。
cache 是自定义其他缓存模版,这样的好处在于可以配置多个缓存模版,然后在hibernate-mapping中绑定到某个class。
例如:
&?xml version="1.0" encoding="UTF-8"?&
&!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" &
&hibernate-mapping&
&class name="com.lovo.po.UserPO" table="userinfo" optimistic-lock="version"&
&!-- region的作用是指明要使用ehcache.xml文件中的哪个规则,这里需要与cache节点中的name属性想匹配,如果不写,则使用默认规则,即defaultCache里面的规则 --&
&cache region="longTime" usage="read-write"/&
&id name="id" column="uid"
type="int"&
&generator class="increment"&&/generator&
&version name="verson" column="version" type="int" /&
&property name="username" column="name" type="string"&&/property&
&/hibernate-mapping&
接下来就在hibernate.cfg.xml文件中标明要使用二级缓存
&?xml version='1.0' encoding='UTF-8'?&
&!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"&
&hibernate-configuration&
&!-- 使用二级缓存EHCACHE --&
&property name="hibernate.cache.EhCacheProvider"&true&/property&
&property name="cache.provider_class"&
org.hibernate.cache.EhCacheProvider
&/property&
&property name="hibernate.cache.use_query_cache"&true&/property&
&/session-factory&
&/hibernate-configuration&
下载次数: 46
浏览: 38049 次
来自: 成都
果然不适合大众.
无论如何都要顶
讲的还不够深入啊
基于rownum,rownum会在查询时产生!您所在的位置: &
Hibernate中二级缓存的配置和使用
Hibernate中二级缓存的配置和使用
本文首先分析Hibernate的耳机缓存策略,讲解什么样的数据适合放到二级缓存中,然后通过代码实例详述Hibernate二级缓存的配置方法。
(一)Hibernate的二级缓存策略的一般过程如下:1) 条件查询的时候,总是发出一条select * from table_name where …. (选择所有字段)这样的SQL语句查询数据库,一次获得所有的数据对象。
2) 把获得的所有数据对象根据ID放入到第二级缓存中。
3) 当Hibernate根据ID访问数据对象的时候,首先从Session一级缓存中查;查不到,如果配置了二级缓存,那么从二级缓存中查;查不到,再查询数据库,把结果按照ID放入到缓存。
4) 删除、更新、增加数据的时候,同时更新缓存。Hibernate的二级缓存策略,是针对于ID查询的缓存策略,对于条件查询则毫无作用。为此,Hibernate提供了针对条件查询的Query Cache。
(二)什么样的数据适合存放到第二级缓存中?
1 很少被修改的数据
2 不是很重要的数据,允许出现偶尔并发的数据
3 不会被并发访问的数据
4 参考数据,指的是供应用参考的常量数据,它的实例数目有限,它的实例会被许多其他类的实例引用,实例极少或者从来不会被修改。
(三)不适合存放到第二级缓存的数据?
1 经常被修改的数据
2 财务数据,绝对不允许出现并发
3 与其他应用共享的数据。
实践部分:
使用EhCache配置二级缓存:配置准备:1)把ehcache-1.2.3.jar加入到当前应用的classpath中。
2)在hibernate.cfg.xml文件中加入EhCache缓存插件的提供类。 & &&name="hibernate.cache.provider_class"& &&&&&org.hibernate.cache.EhCacheProvider& &&&
3)挎贝ehcache.xml文件到类路径(项目工程的src目录下),这个文件在Hibernate安装目录的etc下。配置步骤:Hibernate允许在类和集合的粒度上设置第二级缓存。在映射文件中,&class&和&set&元素都有一个&cache&子元素,这个子元素用来配置二级缓存。 示例:以category(产品类别)和product(产品)的映射为例:
1) 修改要配置缓存的那个持久化类的对象关系映射文件:
Category.hbm.xml
&version="1.0"&encoding="utf-8"& &&!DOCTYPE&hibernate-mapping&PUBLIC&"-//Hibernate/Hibernate&Mapping&DTD&3.0//EN"& &"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"& && &&&&&&name="org.qiujy.domain.cachedemo.Category"&table="categories"& &&&&&&&&&!―& &&&&&&&&&&&&&&配置缓存,必须紧跟在class元素后面& &&&&&&&&&&&&&对缓存中的Category对象采用读写型的并发访问策略& &&&&&&&&&--& &&&&&&&&&usage="read-write"& &&&&&&&& &&&&&&&&&name="id"&type="java.lang.Long"& &&&&&&&&&&&&&name="id"&& &&&&&&&&&&&&&class="native"&& &&&&&&&&& &&&&&&&&& &&&&&&&&&name="version"&column="version"&type="java.lang.Long"&& &&&&&&&& &&&&&&&&&name="name"&type="java.lang.String"& &&&&&&&&&&&&&name="name"&length="32"&not-null="true"& &&&&&&&&& &&&&&&&& &&&&&&&&&name="description"&type="java.lang.String"& &&&&&&&&&&&&&name="description"&length="255"& &&&&&&&&& &&&&&&&& &&&&&&&&&name="products"&table="products"&cascade="all"&inverse="true"& &&&&&&&&&&&&&!--&Hibernate只会缓存对象的简单属性的值,& &&&&&&&&要缓存集合属性,必须在集合元素中也加入子元素& &&&&&&&&而Hibernate仅仅是把与当前持久对象关联的对象的OID存放到缓存中。& &如果希望把整个关联的对象的所有数据都存入缓存,& &则要在相应关联的对象的映射文件中配置元素& &&&&&&&&&&&&--& &&&&&&&&&&&&&usage="read-write"& &&&&&&&&&&&& &&&&&&&&&&&&&column="categoryId"&not-null="true"& &&&&&&&&&&&&&class="org.qiujy.domain.cachedemo.Product"& &&&&&&&&& &&&&&&&& &&&&&& && &&
Product.hbm.xml &version="1.0"&encoding="utf-8"& &&!DOCTYPE&hibernate-mapping&PUBLIC&"-//Hibernate/Hibernate&Mapping&DTD&3.0//EN"& &"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"& && &&&&&&name="org.qiujy.domain.cachedemo.Product"&table="products"& &&&&&&&& &&&&&&&&&usage="read-write"& &&&&&&&& &&&&&&&&&name="id"&type="java.lang.Long"& &&&&&&&&&&&&&name="id"&& &&&&&&&&&&&&&class="native"&& &&&&&&&&& &&&&&&&&& &&&&&&&&&name="version"&column="version"&type="java.lang.Long"&& &&&&&&&& &&&&&&&&&name="name"&type="java.lang.String"& &&&&&&&&&&&&&name="name"&length="32"&not-null="true"& &&&&&&&&& &&&&&&&& &&&&&&&&&name="description"&type="java.lang.String"& &&&&&&&&&&&&&name="description"&length="255"& &&&&&&&&& &&&&&&&& &&&&&&&&&name="unitCost"&type="java.lang.Double"& &&&&&&&&&&&&&name="unitCost"&& &&&&&&&&& &&&&&&&& &&&&&&&&&name="pubTime"&type="java.util.Date"& &&&&&&&&&&&&&name="pubTime"&not-null="true"&& &&&&&&&&& &&&&&&&& &&&&&&&&&name="category"& &&&&&&&&&&&&&&&&&column="categoryId"& &&&&&&&&&&&&&&&&class="org.qiujy.domain.cachedemo.Category"& &&&&&&&&&&&&&&&&cascade="save-update"& &&&&&&&&&&&&&&&&&not-null="true"& &&&&&&&&&& &&&&&&&& &&&&&& && &
2)编辑ehcache.xml文件:& &&&&&&path="c:\\ehcache\"& &&&&&& &&&&&&&&&maxElementsInMemory="10000"& &&&&&&&&&eternal="false"& &&&&&&&&&timeToIdleSeconds="120"& &&&&&&&&&timeToLiveSeconds="120"& &&&&&&&&&overflowToDisk="true"&&& &&&&&&&&&& &&&&&&&&& &&&&&& &&&&&&name="org.qiujy.domain.cachedemo.Category"& &&&&&&&&&maxElementsInMemory="100"& &&&&&&&&&eternal="true"& &&&&&&&&&timeToIdleSeconds="0"& &&&&&&&&&timeToLiveSeconds="0"& &&&&&&&&&overflowToDisk="false"& &&&&&&&&&& &&&&&&&&& &&&&&&& &&&&&&&name="org.qiujy.domain.cachedemo.Category.products"& &&&&&&&&&maxElementsInMemory="500"& &&&&&&&&&eternal="false"& &&&&&&&&&timeToIdleSeconds="300"& &&&&&&&&&timeToLiveSeconds="600"& &&&&&&&&&overflowToDisk="true"& &&&&&&&&&& &&&&&&&&& &&&&&&name="org.qiujy.domain.cachedemo.Product"& &&&&&&&&&maxElementsInMemory="500"& &&&&&&&&&eternal="false"& &&&&&&&&&timeToIdleSeconds="300"& &&&&&&&&&timeToLiveSeconds="600"& &&&&&&&&&overflowToDisk="true"& &&&&&&&&&& &&&&& && &
在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 才行。
【编辑推荐】
【责任编辑: TEL:(010)】
关于&&的更多文章
Windows Phone开发创建吸引人、带给人快乐并保留用户的Windows P
本次的专刊为大家提供了Oracle最新推出的Java SE 8详细的开发教程,从解读到探究Java 8最新
很久很久以前,冬天爱上了夏天,可是他们始终不能相见
流火过,金秋来,在学校开学之前的最后一周,终于凉快
又到了一周的末尾,闷热过后,这周的温度算是降下来了
本书是根据全国计算机技术与软件专业技术资格(水平)考试《网络管理员考试大纲》所要求的考试范围而编写的试题集。全书共分10个
51CTO旗下网站

我要回帖

更多关于 hibernate缓存配置 的文章

 

随机推荐