hibernate缓存3

转载 2012年03月21日 16:33:12

七、哪些方法支持缓存

*get()
*load()
*iterate()  (查询实体对象)

save()

查询缓存只对query.list()起作用

一级缓存测试:

1.Load测试: 在同一个session中发出两次load查询(1)

2.Get测试: 在同一个session中发出两次get查询(1)

3.iterate测试: 在同一个session中发出两次iterator查询(1(id)+N,1(id))

4.Iterate查询属性测试: 同一个session中发出两次查询属性(2次,iterate查询普通属性,一级缓存不会缓存,所以会发出sql)

5.同一个session中先save,再发出load查询save过的数据--save是使用缓存的

6.同一个session中先调用load查询,然后执行sessio.clear()或session.evict(),再调用load查询(2次)

       sessio.clear()或session.evict()可以管理一级缓存,一级缓存无法取消,但可以管理. 上面的语句都会发出sql 因为一级缓存中的实体被清除了

7.向数据库中批量加入1000条数据

       //每一定条数据就强制session将数据持久化,同时清除缓存,避免大量数据造成内存溢出

开启二级缓存测试:

1.开启两个session中发出两次load查询(get与load一样,1次),

2.开启两个session,分别调用load,再使用sessionFactory清楚二级缓存(2次)

3.一级缓存和二级缓存的交互

       session.setCacheMode(CacheMode.GET);    //设置成 只是从二级缓存里读,不向二级缓存里写数据 (2)

       session.setCacheMode(CacheMode.PUT);  //设置成只是向二级缓存里写数据,不读数据 (2次)

开启hibernate查询缓存测试:

1.  开启查询缓存,关闭二级缓存,开启一个session,分别调用query.list  (查询属性)(1次)

2.  开启查询缓存,关闭二级缓存,开启两个session,分别调用query.list  (查询属性)

(1次)第二次没有去查询数据库,因为查询缓存生命周期与session生命周期无关

3.  开启查询缓存,关闭二级缓存,开启两个session,分别调用query.iterate (查询属性)

(2次)第二去查询数据库,因为查询缓存只对query.list()起作用,对query.iterate()不起作用,也就是说query.iterate()不使用查询缓存

4.  关闭查询缓存,关闭二级缓存,开启两个session,分别调用query.list (查询实体对象)      第二去查询数据库,因为list默认每次都会发出查询sql

5.  开启查询缓存,关闭二级缓存,开启两个session,分别调用query.list (查询实体对象)      第二去查询数据库时,会发出N条sql语句,因为开启了查询缓存,关闭了二级缓存,那么查询缓存会缓存实体对象的id,所以hibernate会根据实体对象的id去查询相应的实体,如果缓存中不存在相应的实体,那么将发出根据实体id查询的sql语句,否则不会发出sql,使用缓存中的数据

6.  开启查询缓存,开启二级缓存,开启两个session,分别调用query.list (查询实体对象)      第二不会发出sql,因为开启了二级缓存和查询缓存,查询缓存缓存了实体对象的id列表,hibernate会根据实体对象的id列表到二级缓存中取得相应的数据

相关文章推荐

hibernate 3中的缓存小结

  • 2012-03-20 19:44
  • 115KB
  • 下载

浅谈Hibernate3中的缓存

当你的系统出现性能瓶颈时,改善业务逻辑

hibernate3学习笔记(二十一)|二级缓存

二级缓存及外部缓存,它能够越过数个Session,通过同一个SessionFactory进行管理和维护。 接上例的代码:http://blog.csdn.net/kunshan_shenbin/ar...

hibernate 3中的缓存小结

2.2.    一级缓存的管理: 当应用程序调用Session的save()、update()、savaeOrUpdate()、get()或load(),以及调用查询接口的list()、iter...
  • JIESA
  • JIESA
  • 2015-07-20 22:21
  • 252

hibernate3学习笔记(二十二)|Query缓存机制

测试代码如下: package com.hb3.pack_22;import java.io.IOException;import java.sql.SQLException;import ...

hibernate4 二级缓存demo实例 ( hibernate3 的不同之处)

hibernate使用版本是:hibernate-release-4.3.4.Final 需要的jar包:hibernate-release-4.3.4Final\lib\required下所有...

Hibernate3中Session缓存即一级缓存

Hibernate3中Session缓存即一级缓存 概述 什么是Session缓存 Hibernate的一级缓存是由Session提供的,因此它存在于Session的整 个生命周期中...

Hibernate3一级缓存和二级缓存的理解【转】

Hibernate3一级缓存和二级缓存的理解【转】   2009-08-21 11:03:02|  分类: Hibernate |  标签:hibernate3一级缓存和二级缓存的理解   ...

EJB3缓存 JPA环境下使用Hibernate二级缓存

hibernate二级缓存本质上分为两类:  1.对象缓存  2.查询缓存  在JPA环境下,例如Jboss,底层还是通过Hibernate来实现JPA的Query。  下边简单说一下...

spring学习笔记16--Spring2.x+Hibernate3.x +Struts1.x整合开发(4)-----Hibernate3.x配置二级缓存

一、导入hibernate二级缓存的所用的jar包------------------ehcache-1.2.3.jar 二、在spring配置文件中配置Hibernate的二级缓存相关属性(红色为...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)