配置Hibernate缓存

最近研究Hibernate缓存,昨天向一个同事请教了一番,然后找了一些相关文章,今天做了试验。因为工程已经配置Hibernate作为持久层,于是只做了一些改动。

(1)在hibernate.cfg.xml文件里,添加如下几行:

<!-- enable the second-level cache -->
<property name="hibernate.cache.use_second_level_cache">true</property>
<property name="cache.provider_class">org.hibernate.cache.EhCacheProvider</property>
<property name="hibernate.cache.use_query_cache">true</property>

 

(2)创建ehcache.xml

<ehcache>
    <diskStore path="java.io.tmpdir" />
    <defaultCache maxElementsInMemory="10000" eternal="false"
        timeToIdleSeconds="1200" timeToLiveSeconds="1200"
        overflowToDisk="true" />
</ehcache>

 

(3)在对象和表映射配置文件里添加下面一行:

<cache usage="read-write" include="all" />

 

(4)在查询代码里,添加:

query.setCacheable(true);

 

(5)执行代码

    public void testOne() throws Exception {
        long start = 0;
        Session session = null;
        try {
            start = System.currentTimeMillis();

            session = SessionPool.getInstance().getSession();
            String hql = "from Execution where id=?";
            Query query = session.createQuery(hql);
            query.setParameter(0, "89fbef4e25014d9d01250809b9ac0014");
            //query.setCacheable(false);
            List list = query.list();

            System.out.println("The query costs "
                    + (System.currentTimeMillis() - start));
            printResults(list);
        }
        catch (Exception e) {
            throw e;
        }
        finally {
            session.close();
        }
       
        try {
            start = System.currentTimeMillis();

            session = SessionPool.getInstance().getSession();
            String hql = "from Execution where id=?";
            Query query = session.createQuery(hql);
            query.setParameter(0, "89fbef4e25014d9d01250809b9ac0014");
            //query.setCacheable(true);
            List list = query.list();

            System.out.println("The query costs "
                    + (System.currentTimeMillis() - start));
           
            printResults(list);
        }
        catch (Exception e) {
            throw e;
        }
        finally {
            session.close();
        }
    }

 

(6)查看log文件输出

2010-01-20 22:34:05 [INFO]main-org.hibernate.cache.UpdateTimestampsCache-starting update timestamps cache at region: org.hibernate.cache.UpdateTimestampsCache
2010-01-20 22:34:05 [WARN]main-org.hibernate.cache.EhCacheProvider-Could not find configuration [org.hibernate.cache.UpdateTimestampsCache]; using defaults.
2010-01-20 22:34:05 [DEBUG]main-org.hibernate.cache.EhCacheProvider-started EHCache region: org.hibernate.cache.UpdateTimestampsCache
2010-01-20 22:34:05 [INFO]main-org.hibernate.cache.StandardQueryCache-starting query cache at region: org.hibernate.cache.StandardQueryCache
2010-01-20 22:34:05 [WARN]main-org.hibernate.cache.EhCacheProvider-Could not find configuration [org.hibernate.cache.StandardQueryCache]; using defaults.
2010-01-20 22:34:05 [DEBUG]main-org.hibernate.cache.EhCacheProvider-started EHCache region: org.hibernate.cache.StandardQueryCache
2010-01-20 22:34:06 [DEBUG]main-org.hibernate.cache.StandardQueryCache-checking cached query results in region: org.hibernate.cache.StandardQueryCache
2010-01-20 22:34:06 [DEBUG]main-org.hibernate.cache.EhCache-key: sql: select execution0_.exeID as exeID8_, execution0_.taskID as taskID8_, execution0_.executeDate as executeD3_8_, execution0_.content as content8_, execution0_.proportionOfTask as proporti5_8_, execution0_.executeTimeLength as executeT6_8_, execution0_.createdTime as createdT7_8_, execution0_.updatedTime as updatedT8_8_ from execution execution0_ where execution0_.exeID=?; parameters: 89fbef4e25014d9d01250809b9ac0014, ; named parameters: {}
2010-01-20 22:34:06 [DEBUG]main-org.hibernate.cache.EhCache-Element for sql: select execution0_.exeID as exeID8_, execution0_.taskID as taskID8_, execution0_.executeDate as executeD3_8_, execution0_.content as content8_, execution0_.proportionOfTask as proporti5_8_, execution0_.executeTimeLength as executeT6_8_, execution0_.createdTime as createdT7_8_, execution0_.updatedTime as updatedT8_8_ from execution execution0_ where execution0_.exeID=?; parameters: 89fbef4e25014d9d01250809b9ac0014, ; named parameters: {} is null
2010-01-20 22:34:06 [DEBUG]main-org.hibernate.cache.StandardQueryCache-query results were not found in cache
Hibernate: select execution0_.exeID as exeID8_, execution0_.taskID as taskID8_, execution0_.executeDate as executeD3_8_, execution0_.content as content8_, execution0_.proportionOfTask as proporti5_8_, execution0_.executeTimeLength as executeT6_8_, execution0_.createdTime as createdT7_8_, execution0_.updatedTime as updatedT8_8_ from execution execution0_ where execution0_.exeID=?
2010-01-20 22:34:07 [DEBUG]main-org.hibernate.cache.ReadWriteCache-Caching: com.roadmap.entities.Execution#89fbef4e25014d9d01250809b9ac0014
2010-01-20 22:34:07 [DEBUG]main-org.hibernate.cache.EhCache-key: com.roadmap.entities.Execution#89fbef4e25014d9d01250809b9ac0014
2010-01-20 22:34:07 [DEBUG]main-org.hibernate.cache.EhCache-Element for com.roadmap.entities.Execution#89fbef4e25014d9d01250809b9ac0014 is null
2010-01-20 22:34:07 [DEBUG]main-org.hibernate.cache.ReadWriteCache-Cached: com.roadmap.entities.Execution#89fbef4e25014d9d01250809b9ac0014
2010-01-20 22:34:07 [DEBUG]main-org.hibernate.cache.StandardQueryCache-caching query results in region: org.hibernate.cache.StandardQueryCache; timestamp=5177571924602880
id:89fbef4e25014d9d01250809b9ac0014; content:hello1264037924124
The query costs 17047
2010-01-20 22:34:07 [DEBUG]main-org.hibernate.cache.ReadWriteCache-Cache lookup: com.roadmap.entities.Execution#89fbef4e25014d9d01250809b9ac0014
2010-01-20 22:34:07 [DEBUG]main-org.hibernate.cache.EhCache-key: com.roadmap.entities.Execution#89fbef4e25014d9d01250809b9ac0014
2010-01-20 22:34:07 [DEBUG]main-org.hibernate.cache.ReadWriteCache-Cache hit: com.roadmap.entities.Execution#89fbef4e25014d9d01250809b9ac0014
2010-01-20 22:34:07 [DEBUG]main-org.hibernate.cache.UpdateTimestampsCache-Pre-invalidating space [execution]
2010-01-20 22:34:07 [DEBUG]main-org.hibernate.cache.ReadWriteCache-Invalidating: com.roadmap.entities.Execution#89fbef4e25014d9d01250809b9ac0014
2010-01-20 22:34:07 [DEBUG]main-org.hibernate.cache.EhCache-key: com.roadmap.entities.Execution#89fbef4e25014d9d01250809b9ac0014
Hibernate: update execution set taskID=?, executeDate=?, content=?, proportionOfTask=?, executeTimeLength=?, createdTime=?, updatedTime=? where exeID=?
2010-01-20 22:34:07 [DEBUG]main-org.hibernate.cache.ReadWriteCache-Updating: com.roadmap.entities.Execution#89fbef4e25014d9d01250809b9ac0014
2010-01-20 22:34:07 [DEBUG]main-org.hibernate.cache.EhCache-key: com.roadmap.entities.Execution#89fbef4e25014d9d01250809b9ac0014
2010-01-20 22:34:07 [DEBUG]main-org.hibernate.cache.ReadWriteCache-Updated: com.roadmap.entities.Execution#89fbef4e25014d9d01250809b9ac0014
2010-01-20 22:34:07 [DEBUG]main-org.hibernate.cache.UpdateTimestampsCache-Invalidating space [execution], timestamp: 5177571930873857
2010-01-20 22:34:07 [DEBUG]main-org.hibernate.cache.StandardQueryCache-checking cached query results in region: org.hibernate.cache.StandardQueryCache
2010-01-20 22:34:07 [DEBUG]main-org.hibernate.cache.EhCache-key: sql: select execution0_.exeID as exeID8_, execution0_.taskID as taskID8_, execution0_.executeDate as executeD3_8_, execution0_.content as content8_, execution0_.proportionOfTask as proporti5_8_, execution0_.executeTimeLength as executeT6_8_, execution0_.createdTime as createdT7_8_, execution0_.updatedTime as updatedT8_8_ from execution execution0_ where execution0_.exeID=?; parameters: 89fbef4e25014d9d01250809b9ac0014, ; named parameters: {}
2010-01-20 22:34:07 [DEBUG]main-org.hibernate.cache.StandardQueryCache-Checking query spaces for up-to-dateness: [execution]
2010-01-20 22:34:07 [DEBUG]main-org.hibernate.cache.EhCache-key: execution
2010-01-20 22:34:07 [DEBUG]main-org.hibernate.cache.UpdateTimestampsCache-[execution] last update timestamp: 5177571930873857, result set timestamp: 5177571924602880
2010-01-20 22:34:07 [DEBUG]main-org.hibernate.cache.StandardQueryCache-cached query results were not up to date
Hibernate: select execution0_.exeID as exeID8_, execution0_.taskID as taskID8_, execution0_.executeDate as executeD3_8_, execution0_.content as content8_, execution0_.proportionOfTask as proporti5_8_, execution0_.executeTimeLength as executeT6_8_, execution0_.createdTime as createdT7_8_, execution0_.updatedTime as updatedT8_8_ from execution execution0_ where execution0_.exeID=?
2010-01-20 22:34:07 [DEBUG]main-org.hibernate.cache.ReadWriteCache-Caching: com.roadmap.entities.Execution#89fbef4e25014d9d01250809b9ac0014
2010-01-20 22:34:07 [DEBUG]main-org.hibernate.cache.EhCache-key: com.roadmap.entities.Execution#89fbef4e25014d9d01250809b9ac0014
2010-01-20 22:34:07 [DEBUG]main-org.hibernate.cache.ReadWriteCache-Item was already cached: com.roadmap.entities.Execution#89fbef4e25014d9d01250809b9ac0014
2010-01-20 22:34:07 [DEBUG]main-org.hibernate.cache.StandardQueryCache-caching query results in region: org.hibernate.cache.StandardQueryCache; timestamp=5177571930873858
id:89fbef4e25014d9d01250809b9ac0014; content:hello1264055647093
The query costs 16
2010-01-20 22:34:07 [INFO]Shutdown Hook-org.logicalcobwebs.proxool.proxoolPool-Shutting down 'proxoolPool' pool immediately [Shutdown Hook]
2010-01-20 22:34:07 [INFO]Shutdown Hook-org.logicalcobwebs.proxool.PrototyperController-Stopping Prototyper thread
2010-01-20 22:34:07 [INFO]Shutdown Hook-org.logicalcobwebs.proxool.HouseKeeperController-Stopping HouseKeeper thread

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值