- 浏览: 642573 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
HkEndless:
不好意思,请问这确定是回调机制吗。你的例子中只是将接口的实现类 ...
Spring CallBack回调机制介绍 -
hanmiao:
写的真乱啊,完全不知所云...
Java如何调用可执行文件和批处理命令 -
junia_1:
junia_1 写道 shock: ...
为什么要使用EJB -
junia_1:
shock:
为什么要使用EJB -
coollifer:
不错
SQL Server数据导入到Oracle中的方法
一、 一级缓存
1. 一级缓存只缓存整个对象,不能缓存对象属性;
2. 一级缓存是 Session 级的缓存,不能跨多个 Session 对象来使用;
3. Session 的 load/get 方法支持一级缓存的读和写;
4. Query 的 list 接口只支持一级缓存的写入,不能从一级缓存中读出对象。 list 接口加载对象要发出 SQL ;
5. Query 的 iterate 接口既支持一级缓存的写入,也能从一级缓存中读取对象(如果有的话)。每次用 iterate 接口查询对象,都要先发 SQL 加载查询对象的 id 列表。如果需要用到某个对象,则根据该对象的 id 从一级缓存中查询,有则直接加载,没有则发出 SQL 从数据库加载(这时会出现 1+N 问题)。
6. Session 的 save 方法会将 save 的对象放入一级缓存中,因此如果要 save 大批对象,则应该要及时清空一级缓存,可以采用 Session 的 clear() 方法。
7. 一级缓存是 hibernate 默认使用的,无需配置即可使用。
二、 二级缓存
1. 二级缓存也是只能缓存整个对象,不能缓存对象属性,而且对 load/get 方法、 list/iterate 方法的在使用上跟一级缓存一样。
2. 与一级缓存不同,二级缓存是 SessionFactory 级的缓存,它允许多个 Session 对象之间共用。
3. 使用二级缓存前必须进行一些准备步骤(以 EhCache 为例 ):
(1) 需要有 EhCache 的 xml 配置文件(设置 EhCache 的“缓存对象最大数目”、“对象是否不失效”、“对象允许的空闲时间”、“对象的生存时间”及“对象数目超额时是否缓存至磁盘”);
(2) 在总配置文件 hibernate.cfg.xml 中启用二级缓存(默认开启,无需显示配置):
< property name = "hibernate.cache.use_second_level_cache" > true </ property >
(3) 指定二级缓存的供应商:
< property name = "hibernate.cache.provider_class" > org.hibernate.cache.EhCacheProvider </ property >
(4) 指定需要缓存的类及缓存方式(可在 hibernate.cfg.xml 或对应的类的 .hbm.xml 中配置):
在 hibernate.cfg.xml 中配置:
< class-cache usage = "read-only" class = "my.Student" />
在 Student.hbm.xml 中配置(必须在配置 id 前完成):
< cache usage = "read-only" />
(5) 可以通过 Session 动态设置是否允许对二级缓存进行读和写,方法是: session.setCacheMode(CacheMode.GET) 和 session.setCacheMode(CacheMode.PUT)
(6) SessionFactory 的 evit() 会将一个对象逐处二级缓存。
三、 查询缓存
查询缓存是专为 Query 的 list 方法设计的。对于 iterate() 方法,无论是查询对象属性还是对象本身,查询缓存用与不用都没有区别!
1. 用查询缓存查询属性:
(1) 查询缓存必须要在 hibernate.cfg.xml 中显示启用:
< property name = "hibernate.cache.use_query_cache" > true </ property >
(2) 在代码中如果要用到查询缓存(无论是写还是读缓存),都要进行开启操作,可通过 Query 的 setCacheable( true ) 方法开启;
(3) 查询缓存的生命周期 与 Session 无关(可以跨 Session 查询 ),当查询关联的表发生改变,那么查询缓存的生命周期结束 ( delete 、 update 、 modify )
(4) 开启查询缓存,并用 Query 查询对象的属性(可以是一个或多个)时,采用 Query 的 list 方法可以把得到的属性集合写入查询缓存中。如果查询缓存已经有了该对象的属性,那么就不会发出 SQL 而直接从查询缓存中取出来;
2. 用查询缓存查询对象:
(5) 如果开启查询缓存并通过 list 接口查询对象,在首次查询时会发出 SQL 从数据库中获取对象,同时将对象的 id 列表放入查询缓存中 ;如果再次用查询缓存查询对象,则会根据该对象的 id 发出 SQL 从数据库中加载对象(这时会发出 N 条 SQL 语句)
(6) 如果同时开启查询和二级缓存,那么(5 )中就不会发出 N 条 SQL 语句了,而是直接从二级缓存中加载。(此时的 list 接口有了读二级缓存的能力了!!!)
发表评论
-
hibernate Restrictions用法 MatchMode.ANYWHERE
2012-07-14 15:50 3867方法 说明 Res ... -
hibernate3 大批量更新/删除数据 (update/delete)
2011-11-10 12:15 1339Hibernate3.0 采用新的基 ... -
hibernate lazy(延迟加载)
2011-10-12 02:20 882hibernate lazy策略可以使用在: * < ... -
一些关于Hibernate延迟加载的误区
2011-09-12 23:13 843首先是第一个误区:延迟加载只能作用于关联实体 看到这个是 ... -
org.hibernate.PropertyAccessException: IllegalArgumentException occurred calling
2011-08-12 19:17 1207Hi I am facing a problem wit ... -
Criteria Condition: Match Mode End
2011-07-02 11:05 945//////////////////////////// ... -
Criteria: Group By Criteria
2011-07-02 11:03 1251/////////////////////////////// ... -
Query Criteria Equal
2011-07-02 11:02 852/////////////////////////////// ... -
Criteria: Order
2011-07-02 10:59 733//////////////////////////// ... -
Criteria: Associations Sorting Criteria
2011-07-02 10:57 864//////////////////////////// ... -
hibernate的Query有没有setResultTransformer这个方法
2011-07-01 23:24 3038可以对原生SQL 查询使用ResultTransformer。 ... -
hibernate 保存 oracle 10g大数据字段
2011-06-14 04:01 1414Java代码 要点如下: ... -
Hibernate 错误原因总结
2011-06-14 00:10 13811、错误: object references an unsa ... -
MappingException提示Association references unmapped class错误的解决方法
2011-06-12 17:09 10出现如下错误信息时 Caused by: org.hibe ... -
Hibernate一对多关联映射的配置及其级联删除问题
2011-06-12 17:07 9首先举一个简单的一对多双向关联的配置: 一的一端:Quest ... -
Hibernate多对一关联映射原理、映射方法和数据的保存
2011-06-12 17:06 13Hibernate的多对一关联映射实现的基本原理就是: 在多 ... -
Hibernate一对多单向关联和双向关联映射方法及其优缺点
2011-06-12 17:05 11一对多关联映射和多对一关联映射实现的基本原理都是一样的,既是在 ... -
inverse = “true” example and explanation
2011-06-11 22:18 1082In Hibernate, only the “relatio ... -
ibatis和hibernate区别
2011-04-13 17:34 789ibatis:sql需要自己写 hibe ... -
Hibernate StackOverFlowError 异常出现的原因
2011-04-13 16:51 1239引起StackOverFlowError异常的一般是因为在程序 ...
相关推荐
22.4.3 在应用程序中管理第二级缓存 22.4.4 Session与第二级缓存的交互模式 22.5 运行本章的范例程序 22.6 小结 22.7 思考题 第23章 管理Session和实现对话 23.1 管理Session对象的生命周期 23.1.1 ...
22.4.3 在应用程序中管理第二级缓存 22.4.4 Session与第二级缓存的交互模式 22.5 运行本章的范例程序 22.6 小结 22.7 思考题 第23章 管理Session和实现对话 23.1 管理Session对象的生命周期 23.1.1 ...
22.4.3 在应用程序中管理第二级缓存 22.4.4 Session与第二级缓存的交互模式 22.5 运行本章的范例程序 22.6 小结 22.7 思考题 第23章 管理Session和实现对话 23.1 管理Session对象的生命周期 23.1.1 ...
22.4.3 在应用程序中管理第二级缓存 22.4.4 Session与第二级缓存的交互模式 22.5 运行本章的范例程序 22.6 小结 22.7 思考题 第23章 管理Session和实现对话 23.1 管理Session对象的生命周期 23.1.1 ...
此项目整合了目前主流和最前源的web开发技术:采用ehcache实现二级缓存(包含查询缓存);用sf4j及logback(log4j的升级版)记录日志;proxool(据说是dbcp和c3p0三者中最优秀的)做连接池;使用jquery的ajax实现仿...
此项目整合了目前主流和最前源的web开发技术:采用ehcache实现二级缓存(包含查询缓存);用sf4j及logback(log4j的升级版)记录日志;proxool(据说是dbcp和c3p0三者中最优秀的)做连接池;使用jquery的ajax实现仿...
此项目整合了目前主流和最前源的web开发技术:采用ehcache实现二级缓存(包含查询缓存);用sf4j及logback(log4j的升级版)记录日志;proxool(据说是dbcp和c3p0三者中最优秀的)做连接池;使用jquery的ajax实现仿...
4、Hibernate集成二级缓存框架Ehcache。 5、数据库是MySQL、Oracle和SQL Server,Hibernate的Dialect可使程序移植到其他数据库。 6、采用开源的互动地图Javascript库Leaflet,处理自定义在线地图。 7、采用Google ...
3.4.4. 二级缓存与查询缓存 3.4.5. 查询语言中的替换 3.4.6. Hibernate的统计(statistics)机制 3.5. 日志 3.6. 实现NamingStrategy 3.7. XML配置文件 3.8. J2EE应用程序服务器的集成 3.8.1. 事务策略配置 ...
Hibernate 的 二级缓存 学习案例 案例代码 接下来,就通过一个案例来演示Spring中JDK动态代理的实现过程,具体代码请参见教材3.2.1小节。 CGLIB代理 通过前面的学习可知,JDK的动态代理用起来非常简单,但它是有...
此项目整合了目前主流和最前源的web开发技术:采用ehcache实现二级缓存(包含查询缓存);用sf4j及logback(log4j的升级版)记录日志;proxool(据说是dbcp和c3p0三者中最优秀的)做连接池;使用jquery的ajax实现仿...
只是一个Demo,没有多少逻辑代码,此项目的价值在于: 1.标题所提及技术的整合,Spring包括mvc、aop、ioc等。个人属于强迫症类型,技术水平怎么样再说,代码必须好看 2.Hibernate几个级别缓存对比。见DaoImpl类 3....
2.Hibernate几个级别缓存对比。见DaoImpl类 3.Ehcache方法缓存及页面缓存。见applicationContext-cache.xml及web.xml的pageEhCacheFilter 4.MyBatis+Maven代码生成工具。见bin目录 5.作为项目或者技术研究的基础架构...
包括: +----doc +-----jeecms基础概念.txt ...• 采用伪静态结合页面缓存技术,可自定义路径结构,无需urlrewrite • 轻松建设大规模网站,可通过次级域名建立子站群,各子站后台管理权限分离,全站实现单点登录
内容涵盖安装 Hibernatetools 插件、Session 核心方法、持久化对象生命周期、对象关系映射(1-n、1-1、n-n、继承映射)、检索策略、检索方式(对象导航图、OID 检索、HQL、QBC、本地SQL)、Hibernate 一二级缓存、...
4、Hibernate集成二级缓存框架Ehcache。 5、数据库是MySQL、Oracle和SQL Server,Hibernate的Dialect可使程序移植到其他数据库。 6、采用开源的互动地图Javascript库Leaflet,处理自定义在线地图。 7、采用Google ...
此项目整合了目前主流和最前源的web开发技术:采用ehcache实现二级缓存(包含查询缓存);用sf4j及logback(log4j的升级版)记录日志;proxool(据说是dbcp和c3p0三者中最优秀的)做连接池;使用jquery的ajax实现仿...