?? jdbc-spec.frame9.html
字號(hào):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=gb2312">
<title></title>
</head>
<body bgcolor="#ffffff">
<table width="600">
<tr>
<td><font size="-1"><a href="jdbc-spec.frame.html">目錄</a> | <a
href="jdbc-spec.frame8.html">上一頁</a> | <a href="jdbc-spec.frame10.html">下一頁</a>
</font></td>
<td align="right"><i>JDBC<sup><font size="-2">TM</font></sup> 指南:入門</i></td>
</tr>
</table>
<hr>
<p><br>
<a name="16978"></a> </p>
<h2>9 異步、線程和事務(wù)</h2>
<h3>9.1 異步請(qǐng)求</h3>
<p>某些數(shù)據(jù)庫 API(如 ODBC)提供允許異步執(zhí)行 SQL
語句的機(jī)制。因此應(yīng)用程序可在后臺(tái)啟動(dòng)數(shù)據(jù)庫操作,然后在等待操作完成期間處理其它工作(如管理用戶接口)。</p>
<p><a name="4535"></a>由于 Java
是多線程環(huán)境,因此似乎并不需要支持異步語句執(zhí)行。如果 Java
程序員希望對(duì)于主線程異步地執(zhí)行語句,他們可以方便地創(chuàng)建獨(dú)立線程。</p>
<p><a name="4538"></a> </p>
<h3>9.2 多線程</h3>
<p>要求所有 java.sql
對(duì)象的全部操作都具有多線程安全性,而且能夠在多個(gè)線程同時(shí)調(diào)用同一對(duì)象時(shí)進(jìn)行正確處理。</p>
<p><a name="20651"></a>某些驅(qū)動(dòng)程序可允許更大程度的并行執(zhí)行。開發(fā)人員可假定進(jìn)行的是完全并行執(zhí)行;如果驅(qū)動(dòng)程序需要某種同步形式,則它將提供該形式。開發(fā)人員所能看到的唯一不同點(diǎn)是,應(yīng)用程序運(yùn)行時(shí)并行性減少。</p>
<p><a name="20689"></a>例如,同一 Connection 上的兩個(gè) Statement
可并行執(zhí)行,它們的 ResultSet
可被并行處理(從開發(fā)人員的角度出發(fā))。某些驅(qū)動(dòng)程序?qū)⑻峁┻@種完全的并行性。其它驅(qū)動(dòng)程序可以執(zhí)行一條語句并等到在執(zhí)行完畢后再傳送下一句。</p>
<p><a name="20695"></a>多線程的一個(gè)特殊用途是可以取消一條長(zhǎng)運(yùn)行語句。方法是使用一個(gè)線程來執(zhí)行該語句,而使用另一線程通過
Statement.cancel() 方法取消該語句。</p>
<p><a name="20690"></a><strong>在實(shí)際操作過程中,我們希望大多數(shù) JDBC
對(duì)象都只在一個(gè)線程中被訪問。但是某些多線程支持是必要的,而且在先前的草案中我們?cè)噲D將某些類指定為具有
MT 安全性,而將另一些類指定為不具有 MT
安全性,事實(shí)證明復(fù)雜程度是增加了而不是降低了</strong>。</p>
<p><a name="11734"></a> </p>
<h3>9.3 事務(wù)</h3>
<p>新的 JDBC
連接最初為“自動(dòng)提交”模式。這意味著在數(shù)據(jù)庫內(nèi)每個(gè)語句被當(dāng)作獨(dú)立事務(wù)執(zhí)行。</p>
<p><a name="20011"></a>為在單一事務(wù)內(nèi)執(zhí)行多個(gè)語句,首先必須通過調(diào)用
Connection.setAutoCommit(false) 禁用自動(dòng)提交。</p>
<p><a name="20012"></a>當(dāng)禁用自動(dòng)提交時(shí),該連接始終具有與其關(guān)聯(lián)的隱含事務(wù)。可執(zhí)行
Connection.commit 來完成事務(wù)或執(zhí)行 Connection.rollback
來中止事務(wù)。提交或反轉(zhuǎn)也將啟動(dòng)新的隱含事務(wù)。</p>
<p><a name="4265"></a>事務(wù)的恰當(dāng)語義及其隔離層取決于基本數(shù)據(jù)庫。利用
java.sql.DatabaseMetaData 上的方法可獲取當(dāng)前缺省值,利用
java.sql.Connection 上的方法可將新打開的連接移到不同隔離層。</p>
<p>接口的最初版本不支持提交跨越不同連接的事務(wù)。</p>
<p><br>
</p>
<hr>
<font size="-1"><a href="jdbc-spec.frame.html">
<p>目錄</a> | <a href="jdbc-spec.frame8.html">上一頁</a> | <a
href="jdbc-spec.frame10.html">下一頁</a> </font></p>
<hr>
<address>
<a href="mailto:jdbc@wombat.eng.sun.com">jdbc@wombat.eng.sun.com</a> 或 <a
href="mailto:jdbc-odbc@wombat.eng.sun.com">jdbc-odbc@wombat.eng.sun.com</a>
</address>
<a href="../../../relnotes/SMICopyright.html"><font size="-1"><i>
<p>版權(quán)所有 © 1996, 1997 Sun Microsystems, Inc. 保留所有權(quán)利</i></font>。</a><!-- HTML generated by Suzette Pelouch on April 10, 1998 -->
</p>
</body>
</html>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -