Transaction tx=sessionbeginSession()
String HQL=delete STUDENT
Query query=sessioncreateQuery(HQL)
int size=queryexecuteUpdate()
txcommit()
……
控制台输出了也就一条删除语句Hibernatedelete from T_STUDENT语句执行少了性能上也与使用JDBC相差无几是一个提升性能很好的方法当然为了有更好的性能笔者建议批量更新与删除操作还是使用JDBC方法以及基本的知识点与上面的批量插入方法基本相同这里就不在冗述
笔者这里再提供一个方法就是从数据库端来考虑提升性能在Hibernate程序端调用存储过程存储过程在数据库端运行速度更快以批量更新为例给出参考代码
首先在数据库端建立名为batchUpdateStudent存储过程
create or replace produre batchUpdateStudent(a in number) as
begin
update STUDENT set AGE=AGE+ where AGE>a
end
调用代码如下
Transaction tx=sessionbeginSession()
Connection conn=sessionconnection()
String pd=……{call batchUpdateStudent(?)}
CallableStatement cstmt=connPrepareCall(pd)
cstmtsetInt() //把年龄这个参数设为
txcommit()
观察上面的代码也是绕过Hibernate API使用 JDBC API来调用存储过程使用的还是Hibernate的事务边界存储过程无疑是提高批量处理性能的一个好方法直接运行与数据库端某种程度上讲把批处理的压力转接给了数据库
三编后语
本文探讨了Hibernate的批处理操作出发点都是在提高性能上考虑了也只是提供了提升性能的一个小方面
不管采取什么样的方法来提升性能都要根据实际的情况来考虑为用户提供一个满足需求的而且高效稳定的系统才是重中之中
[] [] [] [] []