亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Hibernate如何實現批量處理

發布時間:2021-12-05 09:35:36 來源:億速云 閱讀:151 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關Hibernate如何實現批量處理的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

Hibernate批量處理其實從性能上考慮,它是很不可取的,浪費了很大的內存。從它的機制上講,Hibernate它是先把符合條件的數據查出來,放到內存當中,然后再進行操作。實際使用下來性能非常不理想,在筆者的實際使用中采用下面的第三種優化方案的數據是:100000條數據插入數據庫,主流臺式機的配置,需要約30分鐘,呵呵,暈倒。

總結下來有三種來處理以解決性能問題:
1:繞過Hibernate API ,直接通過 JDBC API 來做,這個方法性能上是比較好的。也是最快的。
2:運用存儲過程。
3:還是用Hibernate API 來進行常規的批量處理,可以也有變,變就變在,我們可以在查找出一定的量的時候,及時的將這些數據做完操作就

刪掉,session.flush();session.evict(XX對象集); 這樣也可以挽救一點性能損失。這個“一定的量”要就要根據實際情況做定量參考了。一般為30-60左右,但效果仍然不理想。

1:繞過Hibernate API ,直接通過 JDBC API 來做,這個方法性能上是比較好的,也是最快的。(實例為 更新操作)

  1. Transaction tx=session.beginTransaction();   

  2. //注意用的是hibernate事務處理邊界  

  3. Connection conn=session.connection();  

  4. PreparedStatement stmt=conn.preparedStatement
    ("update CUSTOMER as C set C.sarlary=c.sarlary+1 where c.sarlary>1000");  

  5. stmt.excuteUpdate();  

  6. tx.commit();   

  7. //注意用的是hibernate事務處理邊界 

這小程序中,采用的是直接調用JDBC 的API 來訪問數據庫,效率很高。避免了Hibernate 先查詢出來加載到內存,再進行操作引發的性能問題。

2:運用存儲過程。但這種方式考慮到易植和程序部署的方便性,不建議使用。(實例為 更新操作)

如果底層數據庫(如Oracle)支持存儲過程,也可以通過存儲過程來執行批量更新。存儲過程直接在數據庫中運行,速度更加快。在Oracle數

據庫中可以定義一個名為batchUpdateCustomer()的存儲過程,代碼如下:

  1. create or replace procedure batchUpdateCustomer(p_age in number) 
    as begin update CUSTOMERS set AGEAGE=AGE+1 where AGE>p_age;

  2. end; 

以上存儲過程有一個參數p_age,代表客戶的年齡,應用程序可按照以下方式調用存儲過程:

tx = session.beginTransaction();  Connection con=session.connection();  String procedure = "{call batchUpdateCustomer(?) }";  CallableStatement cstmt = con.prepareCall(procedure);  cstmt.setInt(1,0);  //把年齡參數設為0  cstmt.executeUpdate();  tx.commit();

從上面程序看出,應用程序也必須繞過Hibernate API,直接通過JDBC API來調用存儲過程。

感謝各位的閱讀!關于“Hibernate如何實現批量處理”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

黑水县| 丰顺县| 隆回县| 邹城市| 曲沃县| 五家渠市| 宁强县| 璧山县| 湖北省| 乌拉特后旗| 遂昌县| 临漳县| 永仁县| 郓城县| 岳阳市| 沛县| 宁南县| 阿鲁科尔沁旗| 九龙城区| 上蔡县| 西吉县| 定南县| 桃江县| 兴文县| 锦屏县| 凤翔县| 双柏县| 广元市| 武穴市| 安阳县| 东至县| 通化县| 汽车| 泾川县| 宝山区| 微博| 巫溪县| 苍南县| 高清| 钦州市| 资兴市|