關(guān)于事務(wù)(
Transation
),大家肯定都不陌生了,因為作為一個
Web
程序開發(fā)人員來說,我們一般都會和數(shù)據(jù)庫打交道,然后對數(shù)據(jù)庫中的數(shù)據(jù)進行一系列的操作,那么為了保證我們對數(shù)據(jù)操作的合理性我們就不能不用到事務(wù),雖然事務(wù)的實現(xiàn)不需要我們?nèi)ゲ傩模俏覀冞€是需要對事務(wù)進行一些了解,這樣我們才能夠明白我們?nèi)粘K褂玫臇|西,比如我們常用的開源框架
Spring
、
Hibernat
等都會涉及到事務(wù)的問題,雖然事務(wù)有很多不同的實現(xiàn),如符合
JTA
的事先,
JDBC
的實現(xiàn)等等,但是其原理都是差不多的。
?
對于事務(wù)的理解,這個我覺得有必要說一下,一般大家看到的理解都是很正式的、書面的,有時候讓人覺得有些亂,并且細節(jié)的東西太多,在這里我就不說說課貼書了,呵呵,那我就把我自己的一點理解說一下:剛接觸到事務(wù)的時候,感覺還有些模糊,慢慢的感覺清晰了一些,事務(wù)是為了什么而產(chǎn)生的呢?就是為了對付并發(fā)而造成的對數(shù)據(jù)的修改以及讀取時的錯誤(或者說是一些不正常的現(xiàn)象),如果沒有并發(fā),沒有資源的同時訪問,估計也就用不到事務(wù)這個玩意了,呵呵,就像我們在單擊上使用的單用戶的軟件一樣,應(yīng)該不會用到事務(wù)吧,一般又沒有人跟你爭,控制個啥子啊!我覺得事務(wù)就可以這么理解。
?
而對于事務(wù)的分類,一般分為本地事務(wù),即一個數(shù)據(jù)庫的情況;再一個就是全局事務(wù),也就是多個數(shù)據(jù)庫的情況(其數(shù)據(jù)庫事務(wù)的控制稱為
XA
),具體的情況可以看下面幾個鏈接的介紹:
http://blog.csdn.net/ladofwind/archive/2006/09/08/1194812.aspx
關(guān)于數(shù)據(jù)庫事務(wù)的基本概念
http://www.huihoo.com/middleware/trade_middleware.html
里面有介紹關(guān)于
XA
的內(nèi)容
http://www.javaeye.com/topic/6302
對跨數(shù)據(jù)庫事務(wù)的一些討論(總結(jié)一下就是一般采用兩階段提交的方式來解決跨數(shù)據(jù)庫的事務(wù)問題)
http://msdn2.microsoft.com/zh-cn/library/ckawh9ct(VS.80).aspx MS
的關(guān)于單階段和多階段事務(wù)的提交的一些說明文檔
?
并且還要支持
XA
的數(shù)據(jù)庫連接池,開源的如
XAPool
等。
?
要說的就是這么多了,估計也基本夠在
Web
開發(fā)中對其有一個了解
~
如果有更加深入的內(nèi)容再進行討論和補充。