Hibernate如何实现批量处理

技术Hibernate如何实现批量处理这篇文章给大家分享的是有关Hibernate如何实现批量处理的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Hibernate批量处理其实从性能上考虑,它是

本文是关于Hibernate如何实现批处理的。我觉得边肖很实用,就和大家分享一下作为参考。让我们跟着边肖看一看。

事实上,Hibernate批处理在性能方面并不理想,而且会浪费大量内存。就其机制而言,Hibernate首先找出符合条件的数据,放入内存,然后进行操作。其实表现很不理想。在笔者的实际使用中,下面第三个优化方案的数据是:10万条数据插入数据库,主流台式机的配置需要30分钟左右,呵呵,晕。

总而言之,有三种方法可以解决性能问题:

1.绕过Hibernate API,直接通过JDBC API来做。该方法具有良好的性能。也是最快的。

2.使用存储过程。

3.我们还是用Hibernate API进行常规的批处理,也可以改,改就改。当我们发现一定数量时,我们可以及时完成这些数据的运算。

Delete,session . flush();session . exclude(XX对象集);这样也可以节省一点性能损失。这个“一定量”要根据实际情况定量参考。一般30-60左右,但效果还是不理想。

1.绕过Hibernate API,直接通过JDBC API来做。这种方法性能更好,速度最快。(示例是更新操作)

transactiontx=session . BeginIntrasaction();

//注意使用了hibernate事务边界。

connection conn=session . connection();

preparedstatementsmt=conn . preparedstatement

(' updatecustomersracsetc . sarlary=c . sarlary 1 where c . sarlary1000 ');

stmt . excepteupdate();

tx.commit();

//注意使用了hibernate事务边界。

在这个小程序中,直接调用JDBC的API来访问数据库,非常高效。避免Hibernate查询并在操作前将其加载到内存中导致的性能问题。

2.使用存储过程。但是,不建议使用这种方法,因为它易于种植,并且便于部署程序。(示例是更新操作)

如果底层数据库(如Oracle)支持存储过程,也可以通过存储过程执行批量更新。存储过程直接在数据库中运行,速度更快。甲骨文中的数字

根据该库,可以定义一个名为batchUpdateCustomer()的存储过程,代码如下:

creatorreplaceprojectiebatchupdatecustomer(p _ ageinnumber)

asbeginpdatecustomersetageage=AGE 1p _ AGE所在的位置;

结束;

上面的存储过程有一个参数p_age,它表示客户的年龄。应用程序可以通过以下方式调用存储过程:

tx=session . BeginIntrasaction();connection con=session . connection();stringprocedure=' { callbatchUpdateCustomer(?)}';callablestatementcstt=con . prepare call(过程);csmt . setint(1,0);//将age参数设置为0 csmt . execute update();tx.commit();从上面的程序可以看出,应用程序必须绕过Hibernate API,直接通过JDBC API调用存储过程。

感谢阅读!我希望这篇关于“Hibernate如何实现批处理”的文章能在这里分享。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/136811.html

(0)

相关推荐

  • windows自带画图中曲线的使用(如何根据训练的模型绘制roc曲线)

    技术怎么用WindML画个图这篇文章主要为大家展示了“怎么用WindML画个图”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“怎么用WindML画个图”这篇文章吧。用WindM

    攻略 2021年12月22日
  • 元宇宙的定义是什么

    技术元宇宙的定义是什么这篇文章主要讲解了“元宇宙的定义是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“元宇宙的定义是什么”吧! 元宇宙的定

    攻略 2021年11月2日
  • JVM的艺术之如何使用类加载器

    技术JVM的艺术之如何使用类加载器这篇文章主要讲解了“JVM的艺术之如何使用类加载器”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JVM的艺术之如何使用类加载器”吧!正式

    攻略 2021年10月23日
  • 蛋糕简笔画图片大全,自制蛋糕的做法大全谁有

    技术蛋糕简笔画图片大全,自制蛋糕的做法大全谁有家庭自制蛋糕 工具:电饭锅一个 材料:鸡蛋四个、面粉一饭勺、苏打粉(酵母粉)一小勺、生粉两小勺、色拉油、白砂糖、葡萄干若干 制作:先将鸡蛋打散在一个容器里,边搅拌边加入白砂糖

    生活 2021年10月28日
  • optisystem光谱图的x轴怎么缩短(gaussview预测光谱)

    技术eeglab如何绘制通道光谱图小编给大家分享一下eeglab如何绘制通道光谱图,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!绘制通道光谱图

    攻略 2021年12月22日
  • 如何使用Cytoscape的NetworkAnalyzer工具计算网络相关属性

    技术如何使用Cytoscape的NetworkAnalyzer工具计算网络相关属性如何使用Cytoscape的NetworkAnalyzer工具计算网络相关属性,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编

    攻略 2021年11月10日