欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Spring聲明式事務之MathAlwaysTransactionAttti

系統 1964 0

首先介紹下spring的事務傳播規則和隔離級別

PROPAGATION_REQUIRED 如果存在一個事務,則支持當前事務。如果沒有事務則開啟一個新的事務。

PROPAGATION_SUPPORTS 如果存在一個事務,支持當前事務。如果沒有事務,則非事務的執行。但是對于事務同步的事務管理器,PROPAGATION_SUPPORTS與不使用事務有少許不同。

PROPAGATION_MANDATORY 如果已經存在一個事務,支持當前事務。如果沒有一個活動的事務,則拋出異常。

? PROPAGATION_REQUIRES_NEW 總是開啟一個新的事務。如果一個事務已經存在,則將這個存在的事務掛起。

PROPAGATION_NOT_SUPPORTED 總是非事務地執行,并掛起任何存在的事務。

PROPAGATION_NEVER 總是非事務地執行,如果存在一個活動事務,則拋出異常

PROPAGATION_NESTED 如果一個活動的事務存在,則運行在一個嵌套的事務中. 如果沒有活動事務, 則按TransactionDefinition.PROPAGATION_REQUIRED 屬性執

PROPAGATION_NESTED 與PROPAGATION_REQUIRES_NEW的區別 :它們非常類似,都像一個嵌套事務,如果不存在一個活動的事務,都會開啟一個新的事務。使用PROPAGATION_REQUIRES_NEW時,內層事務與外層事務就像兩個獨立的事務一樣,一旦內層事務進行了提交后,外層事務不能對其進行回滾。兩個事務互不影響。兩個事務不是一個真正的嵌套事務。同時它需要JTA事務管理器的支持。
使用PROPAGATION_NESTED時,外層事務的回滾可以引起內層事務的回滾。而內層事務的異常并不會導致外層事務的回滾,它是一個真正的嵌套事務。DataSourceTransactionManager使用savepoint支持PROPAGATION_NESTED時,需要JDBC 3.0以上驅動及1.4以上的JDK版本支持。其它的JTA TrasactionManager實現可能有不同的支持方式。

PROPAGATION_REQUIRED應該是我們首先的事務傳播行為。它能夠滿足我們大多數的事務需求。

?

在TransactionDefinition接口中定義了五個不同的事務隔離級別
ISOLATION_DEFAULT 這是一個PlatfromTransactionManager默認的隔離級別,使用數據庫默認的事務隔離級別.另外四個與JDBC的隔離級別相對應
ISOLATION_READ_UNCOMMITTED 這是事務最低的隔離級別,它充許別外一個事務可以看到這個事務未提交的數據。這種隔離級別會產生臟讀,不可重復讀和幻像讀。
ISOLATION_READ_COMMITTED 保證一個事務修改的數據提交后才能被另外一個事務讀取。另外一個事務不能讀取該事務未提交的數據。這種事務隔離級別可以避免臟讀出現,但是可能會出現不可重復讀和幻像讀。 ISOLATION_REPEATABLE_READ 這種事務隔離級別可以防止臟讀,不可重復讀。但是可能出現幻像讀。它除了保證一個事務不能讀取另一個事務未提交的數據外,還保證了避免下面的情況產生(不可重復讀)。
ISOLATION_SERIALIZABLE 這是花費最高代價但是最可靠的事務隔離級別。事務被處理為順序執行。除了防止臟讀,不可重復讀外,還避免了幻像讀。


我們使用TransactionProxyFactoryBean完成spring的事務管理,他有一個屬性是transactionAttributeSource,這個屬性被定義成為一個TransactionAttributeSource實例

MathAlwaysTransactionAtttirbuteSource是最簡單的TransactionAttributeSource實現,他總是簡單的返回相同的TransactionAttribute,而不管這個事務中包含了那些方法(默認是PROPAGATION_REQUIRED和ISOLATION_DEFAULT),具體配置文件如下:

?

< bean? id ="dataSource" ?class ="org.springframework.jdbc.datasource.DriverManagerDataSource" >
??????
< property? name ="driverClassName" >
?????????
< value > com.sybase.jdbc3.jdbc.SybDriver </ value >
???????
</ property >
???????
< property? name ="url" >
?????????
< value > jdbc:sybase:Tds:192.168.0.10:4100/DB_CENTER?charset=eucgb &amp; jconnect_version=4
?????????
</ value >
???????
</ property >
???????
< property? name ="username" >
?????????
< value > sa </ value >
???????
</ property >
???????
< property? name ="password" >
?????????
< value ></ value >
???????
</ property >
???
</ bean >
????
< bean? id ="TransactionManager" ?class ="org.springframework.jdbc.datasource.DataSourceTransactionManager" >
?????????
< property? name ="dataSource" >
?????????????
< ref? bean ="dataSource" />
?????????
</ property >
????
</ bean > ?
????
< bean? id ="sessionFactory"
????????class
="org.springframework.orm.hibernate3.LocalSessionFactoryBean" >
????????
< property? name ="dataSource" >
????????????
< ref? local ="dataSource" ? />
????????
</ property >
????????
< property? name ="hibernateProperties" >
????????????
< props >
????????????????
< prop? key ="hibernate.dialect" >
????????????????????org.hibernate.dialect.SybaseDialect
????????????????
</ prop >
????????????????
< prop? key ="hibernate.show_sql" > false </ prop >
????????????????
< prop? key ="hibernate.cache.use_query_cache" > true </ prop >
????????????????
< prop? key ="hibernate.cache.provider_class" >
????????????????????org.hibernate.cache.HashtableCacheProvider
????????????????
</ prop >
????????????
</ props >
????????
</ property >
????????
< property? name ="mappingResources" >
???????????
< list >
?????????????
< value > com/bjjdsy/ky/zl/domain/ZlStationTab.hbm.xml </ value >
???????????
</ list >
????????
</ property >
????
</ bean >
????
<!-- ?以下是事務配置? -->
????
????
< bean? id ="transactionAttributeSource" ?class ="org.springframework.transaction.interceptor.MatchAlwaysTransactionAttributeSource" />
????
????
< bean? id ="courseService" ?class ="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" >
??????
< property? name ="proxyInterfaces" >
????????
< value > com.test.CourseService </ value >
??????
</ property >
??????
< property? name ="target" >
????????
< value > courseServiceImpl </ value >
??????
</ property >
??????
< property? name ="transactionManager" >
????????
< ref? bean ="TransactionManager" />
??????
</ property >
??????
< property? name ="trainsactionAttributeSource" >
????????
< ref? bean ="transactionAttributeSource" />
??????
</ property >
????
</ bean >

?

如果我們不想用他提供的默認事務規則和隔離級別

我們可以這樣進行改造

?

< bean? id ="transactionAttributeSource" ?class ="org.springframework.transaction.interceptor.MatchAlwaysTransactionAttributeSource" >
???
< property? name ="transactionAttribute" >
??????
< ref? bean ="myTransactionAttribute" />
???
</ property >
?
</ bean >
?
< bean? id ="myTransactionAttribute" ?class ="org.springframework.transaction.interceptor.DefaultTransactionAttribute" >
???
< property? name ="propagationBehaviorName" >
?????
< value > PROPAGATION_REQUIRES_NEW </ value >
???
</ property >
???
< property? name ="isolationLevelName" >
?????
< value > ISOLATION_REPEATABLE_READ </ value >
???
</ property >
?
</ bean >


Spring聲明式事務之MathAlwaysTransactionAtttirbuteSource使用


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲人与黑人xxxx | 国产区视频在线观看 | 日韩国产在线 | 国产视频www| 亚洲精品一区二区三区婷婷月色 | 97国产精品人妻无码久久久 | 一区二区三区日韩在线观看 | 国产精品久久久久久久久 | 久久亚洲一区二区 | 粉嫩粉嫩芽的虎白女18在线视频 | a天堂在线| 亚洲伊人色一综合网 | 亚洲日本乱码在线观看 | 美女爽到呻吟久久久久 | 国产欧美高清 | 一区二区三区免费视频观看 | 亚洲免费一区二区 | 午夜色大片在线观看 | 欧美视频在线播放 | 国产一区二区欧美 | 成人福利在线看 | 精品麻豆cm视频在线看 | 嫩草影院在线观看网站成人 | 国产在线中文字幕 | 日本VA在线视频播放 | 最新中文字幕在线 | 91九色精品国产 | 草久网 | 欧洲精品久久久 | 国产精品第一区第27页 | 久久精品成人 | 欧美日韩精品一区二区三区蜜桃 | 三级特黄| 久久国产精品久久久久久久久久 | 欧美精品在线观看 | 青草国产超碰人人添人人碱 | 91精品视频在线播放 | 精品中文在线 | 中文字幕av在线播放 | 久久亚洲在线 | 嫩草影院在线入口 |