對於方法采用傳統的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的批量更新/刪除有很大的提升
[] [] [] [] []
From:http://tw.wingwit.com/Article/program/Java/ky/201311/29172.html