當前位置:首頁 » 密碼管理 » 事務的訪問

事務的訪問

發布時間: 2022-09-03 18:58:44

Ⅰ 在java中,事務是什麼有什麼用!

一、什麼是Java事務
通常的觀念認為,事務僅與資料庫相關。
事務必須服從ISO/IEC所制定的ACID原則。ACID是原子性(atomicity)、一致性(consistency)、隔離性
(isolation)和持久性(rability)的縮寫。事務的原子性表示事務執行過程中的任何失敗都將導致事務所做的任何修改失效。一致性表示

當事務執行失敗時,所有被該事務影響的數據都應該恢復到事務執行前的狀態。隔離性表示在事務執行過程中對數據的修改,在事務提交之前對其他事務不可見。持
久性表示已提交的數據在事務執行失敗時,數據的狀態都應該正確。
通俗的理解,事務是一組原子操作單元,從資料庫角度說,就是一組sql指令,要麼全部執行成功,若因為某個原因其中一條指令執行有錯誤,則撤銷先前執行過的所有指令。更簡答的說就是:要麼全部執行成功,要麼撤銷不執行。
既然事務的概念從資料庫而來,那Java事務是什麼?之間有什麼聯系?
實際上,一個Java應用系統,如果要操作資料庫,則通過JDBC來實現的。增加、修改、刪除都是通過相應方法間接來實現的,事務的控制也相應轉移到Java程序代碼中。因此,資料庫操作的事務習慣上就稱為Java事務。
二、為什麼需要事務
事務是為解決數據安全操作提出的,事務控制實際上就是控制數據的安全訪問。具一個簡單例子:比如銀行轉帳業務,賬戶A要將自己賬戶上的1000元
轉到B賬戶下面,A賬戶余額首先要減去1000元,然後B賬戶要增加1000元。假如在中間網路出現了問題,A賬戶減去1000元已經結束,B因為網路中

斷而操作失敗,那麼整個業務失敗,必須做出控制,要求A賬戶轉帳業務撤銷。這才能保證業務的正確性,完成這個操走就需要事務,將A賬戶資金減少和B賬戶資
金增加方到一個事務裡面,要麼全部執行成功,要麼操作全部撤銷,這樣就保持了數據的安全性。
三、Java事務的類型
Java事務的類型有三種:JDBC事務、JTA(Java Transaction API)事務、容器事務。
1、JDBC事務
JDBC 事務是用 Connection 對象控制的。JDBC Connection 介面( java.sql.Connection )提供了兩種事務模式:自動提交和手工提交。 java.sql.Connection 提供了以下控制事務的方法:
public void setAutoCommit(boolean)
public boolean getAutoCommit()
public void commit()
public void rollback()
使用 JDBC 事務界定時,您可以將多個 SQL 語句結合到一個事務中。JDBC 事務的一個缺點是事務的范圍局限於一個資料庫連接。一個 JDBC 事務不能跨越多個資料庫。
2、JTA(Java Transaction API)事務
JTA是一種高層的,與實現無關的,與協議無關的API,應用程序和應用伺服器可以使用JTA來訪問事務。
JTA允許應用程序執行分布式事務處理–在兩個或多個網路計算機資源上訪問並且更新數據,這些數據可以分布在多個資料庫上。JDBC驅動程序的JTA支持極大地增強了數據訪問能力。
如果計劃用 JTA 界定事務,那麼就需要有一個實現 javax.sql.XADataSource 、
javax.sql.XAConnection 和 javax.sql.XAResource 介面的 JDBC
驅動程序。一個實現了這些介面的驅動程序將可以參與 JTA 事務。一個 XADataSource 對象就是一個 XAConnection
對象的工廠。 XAConnection s 是參與 JTA 事務的 JDBC 連接。
您將需要用應用伺服器的管理工具設置 XADataSource 。從應用伺服器和 JDBC 驅動程序的文檔中可以了解到相關的指導。
J2EE 應用程序用 JNDI 查詢數據源。一旦應用程序找到了數據源對象,它就調用 javax.sql.DataSource.getConnection() 以獲得到資料庫的連接。
XA 連接與非 XA 連接不同。一定要記住 XA 連接參與了 JTA 事務。這意味著 XA 連接不支持 JDBC
的自動提交功能。同時,應用程序一定不要對 XA 連接調用 java.sql.Connection.commit() 或者
java.sql.Connection.rollback() 。相反,應用程序應該使用 UserTransaction.begin()、
UserTransaction.commit() 和 serTransaction.rollback() 。
3、容器事務
容器事務主要是J2EE應用伺服器提供的,容器事務大多是基於JTA完成,這是一個基於JNDI的,相當復雜的API實現。相對編碼實現JTA事
務管理,我們可以通過EJB容器提供的容器事務管理機制(CMT)完成同一個功能,這項功能由J2EE應用伺服器提供。這使得我們可以簡單的指定將哪個方
法加入事務,一旦指定,容器將負責事務管理任務。這是我們土建的解決方式,因為通過這種方式我們可以將事務代碼排除在邏輯編碼之外,同時將所有困難交給
J2EE容器去解決。使用EJB CMT的另外一個好處就是程序員無需關心JTA API的編碼,不過,理論上我們必須使用EJB。
四、三種事務差異
1、JDBC事務控制的局限性在一個資料庫連接內,但是其使用簡單。
2、JTA事務的功能強大,事務可以跨越多個資料庫或多個DAO,使用也比較復雜。
3、容器事務,主要指的是J2EE應用伺服器提供的事務管理,局限於EJB應用使用。
五、總結
事務控制是構建J2EE應用不可缺少的一部分,合理選擇應用何種事務對整個應用系統來說至關重要。一般說來,在單個JDBC
連接連接的情況下可以選擇JDBC事務,在跨多個連接或者資料庫情況下,需要選擇使用JTA事務,如果用到了EJB,則可以考慮使用EJB容器事務。

如果滿意請及時採納,謝謝~

Ⅱ 用Java編寫一般應用程序,怎麼實現在一個事務中訪問了多種類型資料庫。

我測試了用jdbc獲得多個connection連接,可以實現,其實和連接一個資料庫是一樣的。
1、注冊資料庫驅動
2、用driverMagager獲得資料庫連接
3、獲得connection之後就可以對資料庫進行操作了

對於需求,其實也是比較容易實現的。只要對於多個要commit的地方,加到同一個try塊中,就可以了。
只要一個資料庫存儲出錯,就會跳出該try,之後再 catch中執行對所以資料庫的rollback。
類似:
try{
以上對於資料庫的操作代碼略
.......................
conn1.commit();
conn2.commit();
conn3.commit();
//其中只要其中一個執行存儲出錯,就會跳到catch中,執行rollback,所以不要存儲一個就commit一次,要一起commit 。
}catch(Exception e){
conn1.rollback();
conn2.rollback();
conn3.rollback();
}finall{
conn1.close();
conn2.close();
conn3.close();
}
主要就是對於執行成功的存儲不要立刻就執行commit操作,這樣如果之後的資料庫出錯就無法rollback成功的那個了。
我們等到所以對於資料庫的操作都執行完畢後,再一起執行commit,如果其中那個出錯也不至於過早的commit,而無法rollback了。

Ⅲ 在國際交往中,友好訪問,正式訪問,國事訪問這幾個都有哪些區別

友好訪問一般是帶私人性質的,比如社會團體之間的訪問,兩黨之間,兩個議會之間以及政要之間的非官方性質訪問。
正式訪問指一個過程的開始,不能區別另外兩個,一般在接受邀請後,抵達邀請過開始到結束,這一個過程就是正式訪問的過程。抵達之時就是正式訪問的開始。
國事訪問是國與國之間的正式交流。顧名思義,國家事務訪問,這事帶有明顯官方性質的交流,一般由一國元首帶隊,代表團以國家機構官方代表為主,訪問所涉及的內容也是兩國之間所要討論的國家大事。
再說白一點,友好訪問就是一個國家出了國家元首出訪以外的訪問。
國家元首訪問都屬於國事訪問。

Ⅳ 在資料庫的事務管理中,什麼是並發訪問為什麼要並發訪問

並發訪問是可能會發生兩個用戶同時對一張表的同一條數據進行修改等操作,這是可能發生的情況,不是故意要同時訪問,所以沒有為什麼!

Ⅳ 事務的隔離級別是什麼

資料庫事務的隔離級別有4種,由低到高分別為Read uncommitted 、Read committed 、Repeatable read 、Serializable 。而且,在事務的並發操作中可能會出現臟讀,不可重復讀,幻讀。

1、Read uncommitted

讀未提交,顧名思義,就是一個事務可以讀取另一個未提交事務的數據。

2、Read committed

讀提交,顧名思義,就是一個事務要等另一個事務提交後才能讀取數據。

3、Repeatable read

重復讀,就是在開始讀取數據(事務開啟)時,不再允許修改操作。

4、Serializable 序列化

Serializable 是最高的事務隔離級別,在該級別下,事務串列化順序執行,可以避免臟讀、不可重復讀與幻讀。但是這種事務隔離級別效率低下,比較耗資料庫性能,一般不使用。

Ⅵ 事務隔離級別是什麼

事務隔離級別是為了保證並發讀取資料庫中數據正確性而採用的一種策略。

事務隔離級別包括了一些具體規則,用來限定事務內外的哪些改變是可見的,哪些是不可見的。低級別的隔離級一般支持更高的並發處理,並擁有更低的系統開銷。

事務的隔離級別有四種級別,讀取未提交內容,在該隔離級別,所有事務都可以看到其他未提交事務的執行結果、讀取提交內容,這是大多數資料庫系統的默認隔離級別。

可重讀,它確保同一事務的多個實例在並發讀取數據時,會看到同樣的數據行、可串列化,這是最高的隔離級別,它通過強制事務排序,使之不可能相互沖突。

事務隔離的解決方法:

1、未授權讀取的方法,也稱為讀未提交。該隔離級別可以通過「排他寫鎖」實現。

2、授權讀取的方法,可以通過「瞬間共享讀鎖」和「排他寫鎖」實現。讀取數據的事務允許其他事務繼續訪問該行數據,但是未提交的寫事務將會禁止其他事務訪問該行。

3、可重復讀取,通過「共享讀鎖」和「排他寫鎖」實現。讀取數據的事務將會禁止寫事務(但允許讀事務),寫事務則禁止任何其他事務。

4、序列化的方式。它要求事務序列化執行,事務只能一個接著一個地執行,不能並發執行。

以上內容參考:網路-事務隔離級別

Ⅶ sql事務訪問資料庫多少次

一、跨資料庫訪問
第一種方式
SELECT * FROM OPENDATASOURCE(
'SQLOLEDB',
'Data Source=遠程ip;User ID=sa;Password=密碼'
).庫名.dbo.表名
WHERE 條件
第二種方式
在sql server組->服務->安全性->鏈接伺服器下建立一個具有別名的鏈接伺服器。然後通過以下方式訪問:
SELECT * FROM [鏈接伺服器名].庫名.dbo.表名
WHERE 條件
需要注意的是建立鏈接資料庫伺服器類型如果選擇「SQL server」,那麼鏈接伺服器名稱必須用要鏈接的伺服器的在網路中的機器名或IP,如果要使用其它別名,可以在WINDOWS\system32\drivers\etc\hosts文件里添加一個別名的映射。

解除SQL阻止(sqlserver 2005情況)
SQL Server 阻止了對組件 『Ad Hoc Distributed Queries』 的 STATEMENT』OpenRowset/OpenDatasource』 的訪問,因為此組件已作為此伺服器安全配置的一部分而被關閉。系統管理員可以通過使用 sp_configure 啟用 『Ad Hoc Distributed Queries』。有關啟用 『Ad Hoc Distributed Queries』 的詳細信息,請參閱 SQL Server 聯機叢書中的 「外圍應用配置器」。
因為SQL2005默認是沒有開啟』Ad Hoc Distributed Queries』 組件,開啟方法如下
EXEC sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
EXEC sp_configure 'Ad Hoc Distributed Queries', 1
GO
RECONFIGURE
GO
關閉Ad Hoc Distributed Queries:
exec sp_configure 'Ad Hoc Distributed Queries', 0
reconfigure
exec sp_configure 'show advanced options', 0
reconfigure

二、分布式事務的配置

1.用DTCPing.exe工具測試兩台機器的DTC服務是否可以聯通。
2.如果有問題檢查MSDTC服務是否啟動。
3.MSDTC依賴於RPC,RPC使用的埠是135,測試135埠是否打開.是否有防火牆?如果有先關了防火牆. telnet IP 135 如果是關閉的打開它.
4.打開「控制面板->管理工具->組件服務」,然後展開「組件服務->計算機->我的電腦」右鍵屬性。選擇MSDTC的Tab欄,點擊安全性配置按鈕,打開窗口,將「網路DTC訪問」選項選中,並將「允許遠程客戶端」,「允許入站」,「允許出站」都選中,並選擇「不要求進行驗證」,「啟用事務Internet協議(TIP)事務」,「啟用XA事務」都選中。然後確定即可。(以上選項windows默認不開放,必須配置)
5.檢查你的兩台伺服器是否在同一個域中. 如果不在同一個域中,是否建立可信任聯接.
6.如果是WIN2000,升級到SP4
7.確認MDAC版本是2.6以上,最好是2.8.
8.在SQL server存儲過程中使用分布式事務時,必須SET XACT_ABORT ON --設置分布式事務如果發生問題主動回滾操作
9.可以聲明使用BEGIN DISTRIBUTED TRANSACTION,如果未明確生明,在事務塊中包含鏈接伺服器的訪問,SQL server會自動升級成分布式事務。

Ⅷ 事務處理時,是否就是實現了資料庫的互斥訪問

不一定,要看設置的事務的隔離級別及鎖是什麼類型。

Ⅸ 事務的隔離級別有幾種

事務的隔離級別有以下幾種:

1、第一種隔離級別:Read uncommitted (讀未提交)

一個事務在寫數據時,不允許另外一個事務進行寫操作,但允許讀操作。這樣避免了更新丟失,卻可能出現臟讀,也就是說(事務A讀到了事務B未提交的數據,事務B修改了內容後,又進行了回滾,那麼此時事務A讀取到的數據就成為了臟數據)。

解決了更新丟失,但還是可能會出現臟讀。

2、第二種隔離級別:Read committed (讀提交)

寫事務提交之前不允許其他事務的讀操作,可以解決臟讀問題。但會出現一個事務范圍內兩個相同的查詢卻返回了不同數據(事務A,讀取了數據後,事務B修改了數據並進行了提交,那麼此時事務A再次讀取時,就會出現數據不一致的情況),這就是不可重復讀。

解決了更新丟失和臟讀問題,但是可能出現不可重復讀。

3、第三種隔離級別:Repeatable read(可重復讀)

在開始讀取數據(事務開啟)時,不再允許修改操作,這樣就可以在同一個事務內兩次讀到的數據是一樣的,因此稱為是可重復讀隔離級別,但是有時可能會出現幻讀。

(事務在操作過程中進行兩次查詢,第二次查詢的結果包含了第一次查詢中未出現的數據或者缺少了第一次查詢中出現的數據(這里並不要求兩次查詢的SQL語句相同)。

這是因為在兩次查詢過程中有另外一個事務插入數據造成的。)

解決了更新丟失、臟讀、不可重復讀、但是還會出現幻讀。

4、第四種隔離級別:Serializable(可序化)

要求事務序列化執行,事務只能一個接著一個地執行,但不能並發執行,如果僅僅通過「行級鎖」是無法實現序列化的,必須通過其他機制保證新插入的數據不會被執行查詢操作的事務訪問到。

序列化是最高的事務隔離級別,同時代價也是最高的,性能很低,一般很少使用,在該級別下,事務順序執行,不僅可以避免臟讀、不可重復讀,還避免了幻讀。

熱點內容
雲伺服器壓力測試 發布:2025-07-05 05:00:28 瀏覽:370
成套設備易損配件清單怎麼配置 發布:2025-07-05 04:55:43 瀏覽:295
c語言線性插值法 發布:2025-07-05 04:55:35 瀏覽:325
鋰離子電池高溫存儲 發布:2025-07-05 04:54:55 瀏覽:342
我的世界如何關閉伺服器公告欄 發布:2025-07-05 04:42:31 瀏覽:642
如何對iis伺服器遠程執行代碼 發布:2025-07-05 03:49:19 瀏覽:132
安卓手機連不到熱點為什麼 發布:2025-07-05 03:47:53 瀏覽:35
安卓平板哪個清理內存好 發布:2025-07-05 03:47:43 瀏覽:920
p2p資料庫 發布:2025-07-05 03:47:10 瀏覽:994
3k買什麼安卓手機 發布:2025-07-05 03:40:30 瀏覽:558