hibernate.jdbc.batch_size
这个属性的使用场合是批量导入数据或批量删除时使用.其实就是相当于使用PreparedStatement.executeBatch()方法..将数个sql语句一起提交获得性能上的提高. hibernate.jdbc.batch_size在hibernate.cfg.xml中设定.
<prop key="hibernate.show_sql">false</prop>
<prop key="hibernate.jdbc.fetch_size">32</prop>
<prop key="hibernate.jdbc.batch_size">16</prop>
<prop key="hibernate.max_fetch_depth">1</prop>
批量导入数据代码.
// for(int i=0;i<16;i++ ){
// UserInfo u = new UserInfo();
// u.setUserName("www"+ i);
// u.setPassword("123");
// session.save(u);
// if (i%16==0){
// session.flush();//每进行完25条时flush session和清空缓存.
// session.clear();//清空缓存
// }
//
// }
//批量更新
Connection con=getSession().connection();
PreparedStatement stmt = con.prepareStatement("update Order_Detail set quantity=? where order_id = ? and Product_Id = ? and Color_ID =?");
for(int i=0;i<quantity.length;i++){
stmt.setFloat(1, NumberUtil.parseFloat(quantity[i], 0));
stmt.setInt(2, NumberUtil.parseInt(orderId, 0));
stmt.setInt(3, NumberUtil.parseInt(productId[i], 0));
stmt.setInt(4, NumberUtil.parseInt(colorId[i], 0));
stmt.addBatch();
}
stmt.executeBatch();
con.close();
}
选择jdbc方式比用Hibernate批量跟新明显快,这在理论上已经证明,下面在利用jdbc方式的同时设置批量跟新的数据量,性能上有所提高,但具体的设置值视具体数据
Connection con=getSession().connection();
PreparedStatement stmt = con.prepareStatement("update Order_Detail set quantity=? where order_id = ? and Product_Id = ? and Color_ID =?");
Long begin = System.currentTimeMillis();
for(int i=0;i<quantity.length;i++){
stmt.setFloat(1, NumberUtil.parseFloat(quantity[i], 0));
stmt.setInt(2, NumberUtil.parseInt(orderId, 0));
stmt.setInt(3, NumberUtil.parseInt(productId[i], 0));
stmt.setInt(4, NumberUtil.parseInt(colorId[i], 0));
stmt.addBatch();
if(i%80 == 0){//执行物理批量插入
stmt.executeBatch();
con.commit();
}
}
stmt.executeBatch();
con.commit();
con.close();
Long end2 = System.currentTimeMillis();
log.info("***************引入batch的批处理跟新时间*****:"+(double)(end2 - begin));
分享到:
相关推荐
本话题将深入探讨“Hibernate性能测试代码”,以帮助我们理解如何有效地评估和优化Hibernate在实际应用中的表现。 首先,性能测试是软件开发过程中的关键环节,它旨在确定系统的响应时间、吞吐量和资源利用率等指标...
### Hibernate性能优化研究 #### 一、引言 随着企业级应用的发展,高效的数据持久化技术成为了提升系统性能的关键因素之一。Hibernate作为一种流行的面向Java环境的对象关系映射(Object-Relational Mapping,简称...
珍藏的hibernate性能优化,如果对hibernate进行优化,很详细,是工作和面试的好助手
本文将深入探讨Hibernate性能优化中的一个重要概念——一级缓存,并结合给出的压缩包文件“hibernate_cache_level1”,来详细解析一级缓存的工作原理及其优化策略。 一级缓存是Hibernate内置的一种缓存机制,它存在...
《Hibernate性能优化》 在Java开发中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。然而,随着应用规模的扩大,性能问题逐渐显现,因此对Hibernate进行性能优化变得至关重要。本篇...
此外,还可以通过分析Hibernate的性能指标来调整诸如`hibernate.jdbc.batch_size`等参数,以达到最佳性能平衡。 总之,通过上述几个方面的优化措施,可以显著提高基于Hibernate构建的应用程序的性能。在实际应用中...
本文将探讨Hibernate在不同场景下的性能特点、应用规模及潜在的风险,并尝试分析这些问题背后的原因。 #### 二、Hibernate性能特点 1. **缓存机制**:Hibernate内置了一套完整的缓存体系,包括一级缓存、二级缓存...
标题:hibernate源码分析一[启动过程] 在深入探讨Hibernate框架的启动过程之前,我们首先需要了解几个核心的概念和类,它们是Hibernate启动流程的基石。 ### 1. 关键类与接口 #### Environment类 `Environment`类...
Hibernate 源码分析过程 Hibernate 是一个基于 Java 的 ORM(Object-Relation Mapping)框架,允许开发者使用面向对象的方式与关系数据库交互。在本文中,我们将对 Hibernate 的源码进行深入分析,并探讨其核心特性...
【提高Hibernate性能】 在开发大型企业级应用时,ORM框架如Hibernate在处理大量数据时可能会出现性能瓶颈。针对这种情况,优化Hibernate的配置和使用策略至关重要。以下是一些提高Hibernate性能的关键点: 1. **...
2. 性能:由于Ibatis允许直接编写SQL,所以在某些情况下,其性能可能优于Hibernate,尤其是在复杂的查询和事务处理上。 3. 学习曲线:Hibernate的全面性使得学习成本较高,而Ibatis的“半自动化”特性使得学习相对...
- 开启`show_sql`,观察和分析Hibernate生成的SQL,找出性能瓶颈。 5. **二级缓存**: - 映射文件中配置二级缓存策略,如查询缓存、实体缓存,可以提高数据读取速度。 - 管理一级缓存,避免过多的对象驻留在内存...
《Hibernate性能调优》 在Java企业级应用开发中,Hibernate作为一款强大的对象关系映射(ORM)框架,被广泛用于数据库操作。然而,如果不合理地使用或配置,Hibernate可能会导致性能瓶颈。本文将深入探讨如何对...
《Hibernate性能优化共9页.pdf》的压缩包文件聚焦于Java开发中的一个重要框架——Hibernate的性能调优。Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作,但同时也可能带来性能问题。以下...
**hibernate源码分析:启动过程** 在深入探讨Hibernate启动过程之前,首先需要了解Hibernate是什么。Hibernate是一个开源的对象关系映射(ORM)框架,它为Java开发人员提供了一种在Java应用程序中操作数据库的方式...
IronTrack SQL不仅仅是一个监控工具,它还提供了专门的工具来帮助开发者分析Hibernate的性能。这些功能可以帮助开发者定位性能瓶颈,比如查询效率低下、不必要的数据库交互等问题,从而进行针对性的优化,提升应用的...
### Hibernate 性能优化 #### 一、引言 Hibernate 是一款非常强大的对象关系映射(ORM)框架,它能够简化 Java 应用程序与数据库之间的交互过程。然而,对于初次接触 Hibernate 的开发者来说,可能会遇到性能方面...