瘋狂
STANDING ON THE SHOULDERS OF GIANTS
posts - 481, comments - 486, trackbacks - 0, articles - 1
BlogJava
::
首頁
::
新隨筆
::
聯(lián)系
::
聚合
::
管理
hibernate,spring管理事務中(transaction,JDBC connection,Hibernate Session的使用研究)(一)
Posted on 2011-11-18 11:25
瘋狂
閱讀(18922)
評論(0)
編輯
收藏
所屬分類:
database
、
spring
、
hibernate
、
方法論
、
架構(gòu)
、
讀代碼
如果單獨使用hibernate可參考上一篇文章
http://www.tkk7.com/freeman1984/archive/2011/08/04/355808.html
首先hibernate的Connection release mode有以下幾種:
1 after_statement 2 after_transaction 3 on_close 其中after_statement 用在jta中 ,
on_close 是3.1之前遺留的(也許是為spring留的-_-),也就是3.1之前默認是on_close ,但3.1之后默認如果單獨使用hibernate是after_transaction,
如果有第三方事務管理,就用第三方提供的默認值,spring就是默認使用了on_close。
在spring管理事務中我們看看系統(tǒng)啟動后默認使用的配置:
1,ransaction strategy: org.springframework.orm.hibernate3.SpringTransactionFactory使用spring事務策略
2,hibernate內(nèi)部 Automatic session close at end of transaction: disabled 因為已經(jīng)交給spring了
3 Connection release mode: auto 默認,也就是沒有配置hibernate.connection.release_mode的時候,但是這里有地方需要注意:也就是前面提到的使用第三方策略時的問題:看一下代碼:
String releaseModeName
=
PropertiesHelper.getString( Environment.RELEASE_CONNECTIONS, properties,
"
auto
"
);
log.info(
"
Connection release mode:
"
+
releaseModeName );
ConnectionReleaseMode releaseMode;
if
(
"
auto
"
.equals(releaseModeName) )
{
releaseMode
=
transactionFactory.getDefaultReleaseMode(); }
else
{
releaseMode
=
ConnectionReleaseMode.parse( releaseModeName );
if
( releaseMode
==
ConnectionReleaseMode.AFTER_STATEMENT
&&
!
connections.supportsAggressiveRelease() )
{
log.warn(
"
Overriding release mode as connection provider does not support 'after_statement'
"
);
releaseMode
=
ConnectionReleaseMode.AFTER_TRANSACTION;
}
}
其中紅色部分就是調(diào)用了spring提供的默認值,而spring的默認值:在jta和cmt中都默認使用的是after_statement
/** */
/**
* Sets connection release mode "on_close" as default.
* <p>This was the case for Hibernate 3.0; Hibernate 3.1 changed
* it to "auto" (i.e. "after_statement" or "after_transaction").
* However, for Spring's resource management (in particular for
* HibernateTransactionManager), "on_close" is the better default.
*/
public
ConnectionReleaseMode getDefaultReleaseMode()
{
return
ConnectionReleaseMode.ON_CLOSE;
}
而spring為什么要使用on_close ,而不是用after_transaction ,我們想想opensessioninview的原理也許能明白,session在view成還要使用,所以不能再transactio
n使用完后關(guān)閉JDBC connection,必須要在session之后,所以要使用on
_close
(
也就是在on session(flush.auto,或者flush.Eagerly) 關(guān)閉)。這種情況hibernate內(nèi)部還會在spring關(guān)閉JDBC connection后提示(費解,因為after transaction之后session沒有關(guān)閉,但是 Connection release mode配置的是on_close,session的關(guān)閉和 Connection 的關(guān)閉都由spring來管理,hibernate就不知道了),所以hibernate有好的提示如下(其實session,已經(jīng)關(guān)閉。當然隨著session的關(guān)閉jdbc鏈接釋放回連接池):
transaction completed on session with on_close connection release mode; be sure to cl
ose the session to release JDBC resources!,
。當然我們也可以使用after_transaction ,這種情況對使用編程式事務非常適用。
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發(fā)表評論。
網(wǎng)站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關(guān)文章:
oracle 索引字段包含date類型,使用spring jdbc更新時不走索引,而是走table access full的問題
(轉(zhuǎn))Oracle數(shù)據(jù)庫如何授權(quán)收費(Database Licensing)
ORA-06548錯誤
ora-01031:insufficient privileges
dbcp重連(轉(zhuǎn))
11g oracle 用戶密碼過期問題
ERROR 1049 (42000): Unknown database 'root' 處理
mysql 1130 錯誤 處理
oracle ORA-39212異常
Spring jdbc(java類型和oracle類型的轉(zhuǎn)換)
Powered by:
BlogJava
Copyright © 瘋狂
日歷
<
2011年11月
>
日
一
二
三
四
五
六
30
31
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
29
30
1
2
3
4
5
6
7
8
9
10
公告
公眾號:
QQjava交流群:
51374316
留言簿
(11)
給我留言
查看公開留言
查看私人留言
隨筆分類
all 生活雜談(16)
android(18)
apache項目(20)
chart(1)
concurrent(5)
database(70)
dwr(3)
flex(6)
hibernate(25)
java (135)
javafx(2)
javascript
java安全(8)
java性能(19)
jbpm(1)
jquery(4)
linux(17)
lucene(1)
netty(3)
nginx(1)
others(2)
questions(31)
questions_hander(28)
spring(32)
struts(9)
swing
UML(2)
unix(13)
web(45)
webservice(9)
xml(5)
敏捷(6)
方法論(28)
架構(gòu)(21)
測試(1)
緩存
網(wǎng)絡通訊(9)
讀代碼(6)
項目管理(19)
相冊
我的相冊
搜索
積分與排名
積分 - 2840513
排名 - 2
最新隨筆
1.? 后續(xù)內(nèi)容請移步公眾號“duomi88”
2.?Netty百萬級推送服務(轉(zhuǎn))
3.?Netty 概述(轉(zhuǎn))
4.?Netty優(yōu)雅退出機制和原理(轉(zhuǎn))
5.?使用JavaMail SearchTerm 收取郵件
6.?JAVA Thread Dump 分析綜述
7.?oracle 索引字段包含date類型,使用spring jdbc更新時不走索引,而是走table access full的問題
8.?FTP主動模式和被動模式的比較(轉(zhuǎn)載)
9.?關(guān)于java RMI在多網(wǎng)卡下(或者啟動360,百度,騰訊等wifi共享下)無法連接問題(java.rmi.ConnectException: Connection refused to host: xx)
10.?(轉(zhuǎn))Oracle數(shù)據(jù)庫如何授權(quán)收費(Database Licensing)
11.? 成功的 Web 應用系統(tǒng)性能測試 (轉(zhuǎn)載)
12.?It is indirectly referenced from required .class file異常
13.?(轉(zhuǎn))svn cleanup failed–previous operation has not finished; run cleanup if it was interrupted
14.?automation服務器不能創(chuàng)建對象 解決辦法
15.?ERROR: transport error 202: gethostbyname: unknown host 解決辦法
16.?JavaScript 跨瀏覽器事件處理(轉(zhuǎn))
17.?函數(shù)聲明 VS 函數(shù)表達式(轉(zhuǎn))
18.?ORA-06548錯誤
19.?項目規(guī)劃與管理記錄2
20.?tmpFile.renameTo(classFile) failed
21.?redhat6.4 64位安裝rlwrap
22.?ora-01031:insufficient privileges
23.?mysql遠程連接問題 Access denied for user 'root'@' ip ' (using password: YES)
24.?dbcp重連(轉(zhuǎn))
25.?解決Vmware Workstation上安裝Linux系統(tǒng)不能SSH遠程連接的問題
26.?URL最大長度限制(轉(zhuǎn))
27.?用MyEclipse測試發(fā)送email時報java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream
28.?我應該采用哪一種 WSDL 樣式?(轉(zhuǎn)載)
29.?linux 掛載ntfs usb 出現(xiàn)mount: unknown filesystem type 'ntfs'
30.?11g oracle 用戶密碼過期問題
最新評論
1.?re: Oracle物化視圖創(chuàng)建全過程(轉(zhuǎn))
評論內(nèi)容較長,點擊標題查看
--ya
2.?re: Oracle物化視圖創(chuàng)建全過程(轉(zhuǎn))
評論內(nèi)容較長,點擊標題查看
--ya
3.?re: 11g oracle 用戶密碼過期問題
問問
--是是是
4.?re: mysql遠程連接問題 Access denied for user 'root'@' ip ' (using password: YES)
asdfsadf
--asdf
5.?re: struts(il8n)實現(xiàn)國際化的一個例子
在啥地方
--正常
主站蜘蛛池模板:
国产91免费视频
|
91香蕉成人免费网站
|
成在线人永久免费视频播放
|
亚洲av产在线精品亚洲第一站
|
aⅴ免费在线观看
|
亚洲欧洲日产国码www
|
久久精品无码专区免费东京热
|
亚洲va在线va天堂va不卡下载
|
精品免费视在线观看
|
亚洲AV综合色区无码一区
|
最近中文字幕免费大全
|
亚洲AV中文无码字幕色三
|
免费av片在线观看网站
|
亚洲视频2020
|
野花高清在线观看免费完整版中文
|
国产精品亚洲va在线观看
|
免费无码一区二区三区蜜桃大
|
亚洲欧美成人av在线观看
|
免费一级一片一毛片
|
成人免费一区二区三区
|
亚洲最大的成网4438
|
午夜宅男在线永久免费观看网
|
亚洲熟妇无码av另类vr影视
|
免费无遮挡无码永久在线观看视频
|
一区二区三区免费在线视频
|
久久亚洲国产精品一区二区
|
最近最好最新2019中文字幕免费
|
亚洲国产韩国一区二区
|
免费无码成人AV片在线在线播放
|
日韩在线观看免费
|
精品久久久久久亚洲
|
91短视频免费在线观看
|
亚洲av中文无码字幕色不卡
|
亚洲av综合avav中文
|
97视频免费在线
|
高清免费久久午夜精品
|
亚洲日本va午夜中文字幕一区
|
欧美a级成人网站免费
|
yy一级毛片免费视频
|
亚洲黄色网址在线观看
|
在线观看免费精品国产
|