- 浏览: 821814 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (488)
- struts1 (4)
- spring (13)
- extjs (36)
- mysql (3)
- sqlserver (2)
- oracle (37)
- 杂谈 (11)
- 面试相关 (35)
- Java基础知识总结 (5)
- Java重要知识点 线程和io流知识点 (6)
- 服务器相关 (1)
- 生活 (1)
- jsp (7)
- servlet (2)
- junit (3)
- struts2 (9)
- 开发必备 (4)
- 使用开发工具总结的知识 (4)
- ibatis (12)
- ajax (2)
- dwr (2)
- jquery (1)
- 设计模式 (4)
- Lucene的学习 (5)
- 经验总结 (19)
- mysql全文搜索相关 (7)
- hibernate (33)
- Sphinx (1)
- log4j的总结 (1)
- 敏捷开发 (9)
- 持续集成 (15)
- UML使用总结 (1)
- Scrum (1)
- OO(面向对象编程) (1)
- struts1和struts2总结 (1)
- 数据库加密 (1)
- 多线程和Socket编程 (6)
- PowerDesigner (2)
- 权限相关 (1)
- ant应用总结 (4)
- 面试必知知识点总结 (6)
- io流与nio流总结 面试相关 (1)
- 敏捷管理工具的使用 (7)
- hsqldb相关 (1)
- svn源码相关 (2)
- debug调试技巧总结 (1)
- hibernate和ibatis对比相关 (6)
- eclipse mylyn 插件的使用总结 (2)
- fisheye使用总结 (2)
- java泛型总结 (1)
- ssh整合总结 (10)
- SpringSide的学习总结 (1)
- JPA学习总结 (2)
- RoR 总结 (2)
- 模型驱动 总结 (1)
- Oracle SQL优化技巧 (4)
- 数据库相关资料 (1)
- oracle练习相关 (4)
- PowerDesigner 使用总结 (2)
- Struts实现国际化相关 (2)
- 权限框架 Spring Security (1)
- freemarker使用总结 (1)
- jsp servlet总结相关 (3)
- Java NIO总结 (1)
- 自己学习必须 (3)
- 蝴蝶容器相关 (2)
- eclipse插件的使用 (1)
- myeclipse的使用 (1)
- flex相关 (1)
- javaeye重生后总结的知识点 (2)
- 公司学习总结 (3)
- JAXB 相关 (1)
- ECSide (1)
- EdoJs 企业ajax框架 (1)
- RSA加密算法 (1)
- jbpm相关 (1)
- JMF原理 (1)
- MyEclipse使用总结 (1)
- Funsion Charts 相关总结 (3)
- 常用知识2011 (2)
- Flex与Java整合 (1)
- IBM WebSphere相关 (1)
- jQuery使用技巧 (2)
- 2011年面试相关知识点总结 (2)
- sqlserver开发相关 (8)
- eclipse 打jar相关 (2)
- Oracle/Mysql/SqlServer比较 (1)
- WebService Axis1.4开发相关 (4)
- 进制数的转换 总结 (1)
- WebService Axis2.0开发相关 (0)
- iteye Struts2 Spring Hibernate整合相关 (3)
- iteye osgi资料相关总结 (1)
- iteye ifos相关相关 (1)
- iteye 国际化相关 (1)
- iteye Hibernate缓存机制 (4)
- iteye Struts2 总结 (1)
- iteye Struts标签总结 (0)
- iteye web配置文件大全 (6)
- iteye Efs 框架总结 (1)
- iteye sql优化 (2)
- iteye 大数据量高并发的数据库优化 (1)
- iteye 开发相关 (1)
- iteye s1sh 和 s2sh整合中的问题以及解决 (1)
- iteye s1sh整合实例 (1)
- iteye s2sh整合实例 (1)
- iteye 面试相关 基础篇 (1)
- iteye Android相关 (1)
- iteye 面试相关 Web篇 (1)
- iteye Sql Server相关 (0)
- iteye struts1与struts2比较 (1)
- iteye jquery 和Struts2 (0)
- iteye struts2与其他插件整合 (0)
- iteye jquery 开发相关 (1)
- iteye eclipse结合spket(Ext,Jquery)开发相关 (0)
- iteye myeclipse 使用技巧相关 (0)
- iteye Memcached 缓存系统相关 (0)
- iteye 常用软件相关 (0)
- iteye 最新技术预览 AjaxSwing (0)
- iteye struts上传下载相关 (0)
- iteye 新技术相关 (0)
- test (0)
- iteye 开发Java游戏相关 (0)
- iteye Java反编译 (0)
- iteye XML解析相关 (0)
- iteye 压缩ZIP相关 (0)
- iteye 面试相关 (0)
- iteye Android开发相关 (4)
- csdn (0)
- e-inoc (0)
- iteye http错误码对应说明 (0)
- iteye 面试扩展知识点 (0)
- iteye oracle面试相关 存储过程,触发器,游标等 (0)
- iteye english study (0)
- iteye starflow工作流引擎 (0)
- iteye IBM WebSphere Application Server Toolkit使用相关 (0)
- iteye spring3 (0)
- iteye mybatis (0)
- iteye js技巧总结 (0)
- iteye SEO优化相关 (2)
- iteye QUI网页界面集成框架 (1)
- iteye AjaxAnywhere (1)
- iteye Nutz相关 (1)
- iteye ibatis技巧 (0)
- iteye dwz (0)
- 128个ajax/javascript框架 (0)
- iteye 2012 Java Swing教程 (1)
- iteye 码头集装箱相关 (1)
- iteye swing (2)
- 兼职工作 (0)
- 2012 新总结的面试相关知识点 常用知识点 (1)
- 淘宝网店相关 (0)
- oracle 常用函数 2012新总结 (1)
- 我的时尚潮流屋 (0)
- 2012 年 面试新总结知识 (1)
- 技巧 (1)
- 2013总结 (1)
- 2015工作相关 (3)
- springmvc (5)
- EasyPR-Java (1)
- java (2)
- editplus 4.0 注册码 (1)
- android (1)
- oracle连接数据库相关 (1)
- 编程资料总结 (2)
- 20160808 (1)
- visio 2013 (1)
最新评论
-
drew926:
泛型的类型参数可以有多个?这是java哪个版本支持的?
java泛型总结 -
listenan:
赞!非常感谢。
Scrum总结 -
cwscwj:
写的很深刻,谢谢,看了一遍,过段时间打算再看一遍。
Scrum总结 -
hwedwin:
w
Struts 2中的OGNL\EL的使用总结 -
lanni2460:
不错 很好 支持……
sqlserver三个驱动包下载
Hibernate缓存配置/批量处理
可选值: org.hibernate.cache.HashtableCacheProvide org.hibernate.cache.EhCacheProvider org.hibernate.cache.OSCacheProvider org.hibernate.cache.SwarmCacheProvider org.hibernate.cache.TreeCacheProvider... 例如: (1).hibernate.cfg.xml Xml代码 <property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property> <property name="hibernate.cache.use_second_level_cache">true</property> <property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property> <property name="hibernate.cache.use_second_level_cache">true</property> (2)spring Xml代码 <prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop> <prop key="hibernate.cache.use_second_level_cache">true</prop> <prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop> <prop key="hibernate.cache.use_second_level_cache">true</prop> Hibernate在默认情况下并不会对所有实体对象进行缓存,所以,我们需要指定缓存哪些对象,在实体对象的映射文件中(相应的<class>标签内部),添加如下配置: <cache usage="read-only"/> 或者在hibernate.cfg.xml中添加如下配置: <class-cache class="com.xxx.hibernate.XXClass" usage="read-only"/> usage="read-only"是“只读”缓存策略。 注意,这个<cache>标签只能放在<class>标签的内部,而且必须处在<id>标签的前面。 Hibernate二级缓存是SessionFactory级的缓存,它允许多个Session间共享,使用时需要使用第三方的缓存组件,新版 Hibernate将EHcache作为默认的二级缓存实现. 缓存同步策略:缓存同步策略决定了数据对象在缓存中的存取规则,我们必须为每个实体类指定相应的缓存同步策略.Hibernate中提供了4种不同的缓存同步策略: 1.read-only:只读.对于不会发生改变的数据可使用. 2.nonstrict-read-write:如果程序对并发访问下的数据同步要求不严格,且数据更新频率较低,采用本缓存同步策略可获得较好性能. 3.read-write:严格的读写缓存.基于时间戳判定机制,实现了"read committed"事务隔离等级.用于对数据同步要求的情况,但不支持分布式缓存,实际应用中使用最多的缓存同步策略. 4.transactional: 事务型缓存,必须运行在JTA事务环境中.此缓存中,缓存的相关操作被添加到事务中(此缓存类似于一个内存数据库),如事务失败,则缓冲池的数据会一同回 滚到事务的开始之前的状态.事务型缓存实现了"Repeatable read"事务隔离等级,有效保证了数据的合法性,适应于对关键数据的缓存,Hibernate内置缓存中,只有JBossCache支持事务型缓存. 各种缓存实现 hibernate.cache.use_minimal_puts:是否优化二级缓存来最小化读写操作,集群时的缓存优化。可选值:true(默认):启用最小化读写操作。false:禁用最小化读写操作。 hibernate.cache.use_query_cache:是否缓存查询结果(条件查询时用)。可选值:true:缓存查询结果。false:不缓存查询结果 hibernate.cache.use_second_level_cache:否启用二级缓存。可选值:true:启用二级缓存。false:不使用二级缓存。 hibernate.cache.query_cache_factory:设置自定义的查询缓存类全名,缓存类必须实现 org.hibernate.cache.QueryCache接口。可选值: (1)org.hibernate.cache.StandardQueryCache(默认)。(2)自定义缓存实现类。 hibernate.cache.region_prefix:二级缓存的前缀名称。 hibernate.cache.use_structured_entries:是否使用结构化的方式缓存对象。可选值:true:结构化方式缓存对象。false:不使用结构化的方式缓存对象。 附:echcache.xml Xml代码 <?xml version="1.0" encoding="UTF-8"?> <ehcache> <diskStore path="java.io.tmpdir"/> <defaultCache maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="true"/> <cache name="org.hibernate.cache.StandardQueryCache" maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="200" timeToLiveSeconds="500" overflowToDisk="true"/> <cache name ="org.hibernate.cache.UpdateTimestampsCache" maxElementsInMemory ="5000" eternal ="true" overflowToDisk ="true"/> </ehcache> <?xml version="1.0" encoding="UTF-8"?> <ehcache> <diskStore path="java.io.tmpdir"/> <defaultCache maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="true"/> <cache name="org.hibernate.cache.StandardQueryCache" maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="200" timeToLiveSeconds="500" overflowToDisk="true"/> <cache name ="org.hibernate.cache.UpdateTimestampsCache" maxElementsInMemory ="5000" eternal ="true" overflowToDisk ="true"/> </ehcache> maxElementsInMemory属性用于指定缓存中最多可放多少个对象。 eternal属性指定缓存是否永久有效。 timeToIdleSeconds属性指定缓存闲置多久未被使用便清理掉。 timeToLiveSeconds属性指定缓存的生命长度。 diskPersistent属性指定缓存是否被持久化到硬盘中,保存路径由<diskStore>标签指定。 测试时,log4j.properties Java代码 log4j.logger.org.hibernate=warn log4j.logger.org.hibernate.cache=debug log4j.logger.org.hibernate=warn log4j.logger.org.hibernate.cache=debug 批量处理: 由于Hibernate对这两种缓存有着不同的管理机制,对于二级缓存,我们可以对它的大小进行相关配置,而对于内部缓存,Hibernate就采取了 “放任自流”的态度了,对它的容量并没有限制。现在症结找到了,我们做海量数据插入的时候,生成这么多的对象就会被纳入内部缓存(内部缓存是在内存中做缓存的),这样你的系统内存就会一点一点的被蚕食,如果最后系统被挤“炸”了,也就在情理之中了。 我们想想如何较好的处理这个问题呢?有的开发条件又必须使用Hibernate来处理,当然有的项目比较灵活,可以去寻求其他的方法。 这里推荐两种方法: (1):优化Hibernate,程序上采用分段插入及时清除缓存的方法。 (2):绕过Hibernate API ,直接通过 JDBC API 来做批量插入,这个方法性能上是最 好的,也是最快的。 对于上述中的方法1,其基本是思路为:优化Hibernate,在配置文件中设置hibernate.jdbc.batch_size参数,来指定每次提交SQL的数量;程序上采用分段插入及时清除缓存的方法(Session实现了异步write-behind,它允许Hibernate显式地写操作的批处理),也就是每插入一定量的数据后及时的把它们从内部缓存中清除掉,释放占用的内存。 设置hibernate.jdbc.batch_size参数,可参考如下配置。 Xml代码 <hibernate-configuration> <session-factory> ......... <property name=” hibernate.jdbc.batch_size”>50</property> ......... <session-factory> <hibernate-configuration> <hibernate-configuration> <session-factory> ......... <property name=” hibernate.jdbc.batch_size”>50</property> ......... <session-factory> <hibernate-configuration> 配置hibernate.jdbc.batch_size参数的原因就是尽量少读数据库,hibernate.jdbc.batch_size参数值越大,读数据库的次数越少,速度越快。从上面的配置可以看出,Hibernate是等到程序积累到了50个SQL之后再批量提交。 hibernate.jdbc.batch_size参数值也可能不是设置得越大越好,从性能角度上讲还有待商榷。这要考虑实际情况,酌情设置,一般情形设置30、50就可以满足需求了。 Java代码 Session session=HibernateUtil.currentSession(); Transatcion tx=session.beginTransaction(); for(int i=0;i<10000;i++) ...{ Student st=new Student(); st.setName(“feifei”); session.save(st); if(i%50==0) //以每50个数据作为一个处理单元 ...{ session.flush(); //保持与数据库数据的同步 session.clear(); //清除内部缓存的全部数据,及时释放出占用的内存 } } tx.commit(); ......... Session session=HibernateUtil.currentSession(); Transatcion tx=session.beginTransaction(); for(int i=0;i<10000;i++) ...{ Student st=new Student(); st.setName(“feifei”); session.save(st); if(i%50==0) //以每50个数据作为一个处理单元 ...{ session.flush(); //保持与数据库数据的同步 session.clear(); //清除内部缓存的全部数据,及时释放出占用的内存 } } tx.commit(); ......... 在一定的数据规模下,这种做法可以把系统内存资源维持在一个相对稳定的范围。 注意:前面提到二级缓存,在这里有必要再提一下。如果启用了二级缓存,从机制上讲Hibernate为了维护二级缓存,我们在做插入、更新、删除操作时,Hibernate都会往二级缓存充入相应的数据。性能上就会有很大损失,所以建议在批处理情况下禁用二级缓存。
发表评论
-
Hibernate工作原理
2010-10-03 10:34 4093Hibernate工作原理 图 ... -
Hibernate基础
2010-09-19 09:43 1132Hibernate基础 Part 1 1. ... -
hibernate一对一映射外键关联
2010-09-17 11:24 1308hibernate一对一映射外键关联 一对一外键关联 外键关 ... -
在Hibernate中使用JDBC事务
2010-09-16 14:21 1280在Hibernate中使用JDBC事务 Hibernate ... -
hibernate事务,一级缓存,二级缓存
2010-09-16 12:34 1154hibernate主要从以下几个 ... -
Hibernate的五个核心接口介绍
2010-09-16 12:14 1001所有的Hibernate应用中都会访问Hibernate的 ... -
hibernate知识点总结
2010-09-16 08:48 1281hibernate知识点总结 1.hibernate的优缺点 ... -
项目缓存方案总结
2010-09-16 08:42 839项目缓存方案总结 一 ... -
hibernate缓存总结
2010-09-16 08:30 963hibernate缓存总结: 缓存是位于应用程序与 ... -
Hibernate中一级缓存、二级缓存及查询缓存的技术性总结
2010-09-15 22:54 865一、 一级缓存 1. 一级缓存只缓存整个对象 ... -
Hiberante3 一级缓存总结
2010-09-15 22:53 437Hiberante3 一级缓存总结 1. ... -
Hibernate中的缓存总结
2010-09-15 22:51 980Hibernate中的缓存总结 Hibernate ... -
hibernate缓存相关
2010-09-15 22:49 806hibernate缓存相关 hibernat ... -
hibernate技术面试相关
2010-09-13 20:51 1145Hibernate 中数据表映射关 ... -
hibernate 相关面试题
2010-09-13 20:50 10061.在数据库中条件查询 ... -
hibernate get()与load()的区别
2010-09-13 15:36 817hibernate get()与load()的区别 s ... -
Hibernate持久化对象的生命周期
2010-09-13 11:06 1050持久化对象的状态: ... -
Hibernate中持久化类实例的三种状态
2010-09-13 10:59 2124在Hibernate中持久化类实 ... -
全面介绍Hibernate持久化类
2010-09-13 10:55 1200Hibernate持久化类使用的是JavaBean的风格,为要 ... -
hibernate参考文档下载
2010-09-13 10:41 1170hibernate参考文档下载 这是一个非常有用改的hibe ...
相关推荐
总的来说,虽然ORM框架在处理大数据时可能存在性能挑战,但通过合理配置和使用批处理、游标滚动以及适时的缓存管理,我们可以克服这些挑战,使Hibernate在批量数据处理中发挥高效的作用。在实际项目中,还应结合...
3. **利用批量处理**:通过设置`batch_size`等参数,减少数据库交互次数。 4. **避免长时间持有`Session`**:长时间持有`Session`会导致一级缓存过大,增加内存负担。 5. **手动清除缓存**:必要时可通过`evict`方法...
6. 批量操作和缓存:讲解如何进行批量数据处理,以及利用二级缓存提高性能。 **NHibernate 3.0 Cookbook-cut.pdf** 这本书可能是一本关于 NHibernate 实践技巧的集合,"cut" 版可能意味着它是部分内容的精简版。书...
- **JDBC批量大小设置**:为了优化性能,需要在Hibernate配置文件中设置JDBC批量处理的大小。合理的数值通常介于10到50之间,例如: ```xml <property name="hibernate.jdbc.batch_size">20</property> ``` 这...
2. **缓存配置** - `hibernate.cache.provider_class`: 缓存提供者类,例如,`net.sf.ehcache.hibernate.EhCacheProvider`用于EhCache。 - `hibernate.cache.use_query_cache`: 是否开启查询缓存,默认为`false`。...
在 Hibernate 配置文件中,可以设置 `hibernate.jdbc.batch_size` 参数来指定批量抓取的大小。 如何实现批量更新 在 Controller 层,需要将大量数据插入到数据库时,可以使用以下方法: ```java for (int i = 0; ...
### Hibernate批量处理数据 ...通过对Hibernate的合理配置以及采取合适的批量处理策略,可以有效提升系统的整体性能,避免内存溢出等问题的发生。希望本文提供的方法能帮助开发者更好地处理大数据量的场景。
Hibernate是一款开源的对象关系映射(ORM)框架,它允许开发者使用面向对象的编程方式来处理数据库操作。在Java世界中,Hibernate是应用最广泛的ORM工具之一,极大地简化了数据库访问的复杂性。这个" Hibernate3.1/...
3. **查询优化**:在进行批量查询时,如果某个对象已经在二级缓存中,Hibernate会直接从缓存中读取,避免了多次数据库访问。 **三、配置二级缓存** 配置Hibernate二级缓存主要包括以下步骤: 1. 引入缓存依赖:在...
### Hibernate缓存机制详解 #### 一、Hibernate缓存机制原理及配置 **1.1 Hibernate缓存概述** ...针对不同的应用场景选择合适的缓存策略,并根据实际情况调整缓存配置,才能充分发挥Hibernate缓存的优势。
### Hibernate缓存深入解析 #### 缓存的重要性与工作原理 缓存技术是提升系统性能的关键手段之一,尤其是在处理大量数据访问的应用程序中。通过减少对底层数据存储系统的直接访问频率,缓存能够显著加快数据读取...
此外,批量处理数据也是提升性能的重要手段,可以通过HQL、JDBC API或Session的批量操作接口来实现。 总的来说,尽管Hibernate的使用场景可能不像过去那么广泛,但其提供的对象关系映射、缓存机制和查询优化策略...
- `hibernate.jdbc.batch_size`: 批量处理的SQL语句数量,提高性能。 - `hibernate.max_fetch_depth`: 最大级联加载深度,防止无限递归问题。 - `hibernate.generate_statistics`: 是否开启统计信息收集,有助于...
- 第二级缓存:通过配置缓存插件(如EhCache),提高数据读取速度。 - 批量操作:使用批处理更新或插入,减少数据库交互次数。 -懒加载和fetch策略:根据需求调整关联对象的加载时机,避免N+1问题。 **七、Spring...
7. 性能调优:提供了各种优化技巧,如缓存配置、连接池管理、查询优化等。 三、学习路径 对于初学者,应先了解ORM的概念和优势,然后通过快速入门章节建立第一个示例项目。深入理解持久化模型后,可以尝试编写复杂...
这个“hibernate相关配置.rar”文件很可能包含了关于如何配置和使用Hibernate的各种资源,包括XML配置文件、实体类、映射文件等。接下来,我们将深入探讨Hibernate的核心概念和配置。 1. **什么是Hibernate?** ...
* Hibernate二级缓存可以进行大小配置,可以设置二级缓存的大小来避免内存溢出。 知识点三:批量插入的正确方式 * 设置批量尺寸:通过设置hibernate.jdbc.batch_size参数,可以控制批量插入的大小,从而减少数据库...
hibernate概述,hibernate入门Demo,hibernate配置文件详解(全局配置,实体类映射配置),配置实体规则,核心API详解(Configuration,sessionFactory,session,Transaction),hibernate中的对象状态以及刷新能缓存机制 ...