java

位置:IT落伍者 >> java >> 浏览文章

Hibernate的批量处理[4]


发布日期:2024年03月28日
 
Hibernate的批量处理[4]

对于方法采用传统的JDBC的批处理使用JDBC API来处理这些方法请参照java 批处理自执行SQL

看看上面的代码是不是总觉得有不妥的地方?对没发现么!这还是JDBC的传统编程没有一点Hibernate味道

可以对以上的代码修改成下面这样

Transaction tx=sessionbeginTransaction() //使用Hibernate事务处理

边界Connection conn=sessionconnection()

PrepareStatement stmt=connprepareStatement(insert into T_STUDENT(name) values(?)

for(int j=j++j<){

for(int i=i++j<

{

stmtsetString(feifei

}

}

stmtexecuteUpdate()

txcommit() //使用 Hibernate事务处理边界

……

这样改动就很有Hibernate的味道了笔者经过测试采用JDBC API来做批量处理性能上比使用Hibernate API要高将近性能上JDBC 占优这是无疑的

批量更新与删除

Hibernate对于批量更新操作Hibernate是将符合要求的数据查出来然后再做更新操作批量删除也是这样先把符合条件的数据查出来然后再做删除操作

这样有两个大缺点

占用大量的内存

处理海量数据的时候执行update/delete语句就是海量了而且一条update/delete语句只能操作一个对象这样频繁的操作数据库性能低下应该是可想而知的了

Hibernate 发布后对批量更新/删除操作引入了bulk update/delete其原理就是通过一条HQL语句完成批量更新/删除操作很类似JDBC的批量更新/删除操作在性能上比Hibernate的批量更新/删除有很大的提升

[] [] [] [] []

               

上一篇:Hibernate的批量处理[1]

下一篇:Hibernate的批量处理[5]