hibernate4使用原生jdbc進行批處理

2021-08-08 13:02:17 字數 1486 閱讀 7003

在hibernate中,有一級快取session和二級快取sessionfactory這些機制,一方面為編碼提供了便利,同時也會有一些***。比如有較大的資料量互動的話,快取反而會降低效率。最近在做乙個有關批量更新的程式,在呼叫session.update()之後,物件會儲存在快取中,如果資料量超過快取的容量就會出錯。解決方法是:在hibernate中呼叫jdbc批量處理的api,使用原生的jdbc來進行批量操作。

但是這裡又出現了新的問題,在hibernate4中,通過session是不能直接獲取到jdbc的connection。hibernate4中提供了乙個session.dowork()的方法,用來處理原生的jdbc批量操作。work是乙個介面,介面方法中的引數提供了jdbc的connection,只要需要用到jdbc,就用session.dowork();然後在這個方法中實現這個介面,我覺得這裡的設計非常巧妙,可復用性較高。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

publicvoidsetstatus(string arrmsgid)

stmt.executebatch();

ts.commit();

}catch(exception e)

}

});

hibernateutil.closesession(hbmsession);

}

hibernate4使用本地sql查詢和刪除

public listlistall mapmap,int pn,int pagesize throws exception if global.isempty map.get mmssubject if global.isempty map.get startmmsdate if global.i...

HIBERNATE4原始碼編譯

git gradlew.bat assemble 可跳過測試,否則執行gradlew.bat build的過程中,遇到test出錯會報錯退出 本以為會順利結束,沒想到又報錯了。是符號無法識別轉換的錯誤。在網上搜尋了一番,這個跟系統的區域設定有關。需要改為 英語 英國 我試了英語 美國 居然還是報錯。...

osgi 環境下 hibernate 4 配置

準備將公司的老應用遷移到osgi karaf平台上。很 的一點就是hibernate。這玩意,真是超級麻煩的乙個工程。classload是最頭痛的乙個問題。在hibernate4上利用註冊服務的方式 實現了 classloader的 順便提一句想用hibernate3做reloadclass的同學們...