|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個軟體套件 下一個軟體套件 | 框架 無框架 |
請參見:
描述
介面摘要 | |
---|---|
CommonDataSource | 此介面定義在 DataSource 、XADataSource 和 ConnectionPoolDataSource 之間公用的方法。 |
ConnectionEventListener |
註冊該物件便可獲得由 PooledConnection 物件產生的事件的通知。 |
ConnectionPoolDataSource | PooledConnection 物件的處理器。 |
DataSource | 該處理器用於提供到此 DataSource 物件所表示的物理資料源的連接。 |
PooledConnection | 為連接池管理提供鉤子 (hook) 的物件。 |
RowSet | 該介面添加了對 JavaBeansTM 元件模型的 JDBC API 支持。 |
RowSetInternal | 為了將自身呈現給 RowSetReader 或 RowSetWriter 物件的 RowSet 物件實作應實作該介面。 |
RowSetListener | 要在 RowSet 物件的生命週期內發生重要事件時得到通知的元件必須實作該介面。 |
RowSetMetaData | 該物件包含關於 RowSet 物件的列的資訊。 |
RowSetReader | 該設施供非連接 RowSet 物件調用以填充資料行。 |
RowSetWriter | 實作 RowSetWriter 介面的物件,稱為 writer。 |
StatementEventListener | 註冊為能獲得 Statement 池中 PreparedStatement 上所發生事件的通知的物件。 |
XAConnection | 為分佈式事務提供支持的物件。 |
XADataSource | 在內部使用的 XAConnection 物件的處理器。 |
類別摘要 | |
---|---|
ConnectionEvent | 提供關於連接相關事件的源資訊的 Event 物件。 |
RowSetEvent | RowSet 物件發生事件時產生的 Event 物件。 |
StatementEvent | StatementEvent 被傳送給所有用 PooledConnection 註冊的 StatementEventListener 。 |
為通過 JavaTM 程式語言進行伺服器端資料源存取和處理提供 API。此套件補充了 java.sql
套件,它從 1.4 版本開始包含在 Java 平臺、標準版 (Java SETM) 中。它保留了 Java 平臺、企業版 (Java EETM) 中的精華部分。
java.sql
套件中提供以下內容:
DataSource
介面,用於建立到資料源的連接,是 DriverManager
的替代項。
應用程序直接使用 DataSource
和 RowSet
API,但連接池和分佈式事務 API 只能由中間層基礎設施在內部使用。
DataSource
物件建立連接javax.sql
套件提供建立到資料源的連接的首選方式。DriverManager
類別(原始機制)仍然有效,使用它的程式碼將繼續運行。然而,與 DriverManager
機制相比,較新的 DataSource
機制更為可取,因為有更多的優點。
下面是使用 DataSource
物件建立連接的主要優點:
DataSource
物件,可獲得連接池、語句池和分佈式事務。通過 DriverManager
建立的連接不具有連接池和語句池或分佈式事務功能。
驅動程序提供 DataSource
實作。特定的 DataSource
物件表示特定的物理資料源,DataSource
物件創建的每個連接都是到該物理資料源的連接。
資料源的邏輯名稱需要向使用 Java Naming and Directory InterfaceTM (JNDI) API 的命名服務註冊,通常由系統管理員或某個執行系統管理員職責的人執行。應用程序可以通過尋找註冊的邏輯名稱獲取它需要的 DataSource
物件。然後,應用程序可以使用 DataSource
物件創建到它所表示物理資料源的連接。
DataSource
物件可以實作為與中間層設施一起使用,這樣可將它產生的連接入池以供重用。使用這種 DataSource
實作的應用程序將自動獲取參與連接池的連接。DataSource
物件也可以實作為與中間層設施一起使用,這樣無需要任何特殊編碼即可將它所產生連接用於分佈式事務。
DataSource
物件建立的連接將參與連接池。這能顯著地提高性能,因為創建新連接開銷很大。連接池允許使用和重用連接,因此可以極大地減少需要創建的新連接數。
連接池是完全透明的。此操作是在中間層 Java EE 配置中自動完成的,因此就應用程序而言,無需對程式碼進行任何更改。應用程序可以簡單地使用 DataSource.getConnection
方法獲取入池連接,並按使用任何 Connection
物件相同的方式使用該連接。
用於連接池的類別和介面是:
ConnectionPoolDataSource
PooledConnection
ConnectionEvent
ConnectionEventListener
StatementEvent
StatementEventListener
ConnectionPoolDataSource
物件創建 PooledConnection
物件時,連接池管理器將作為 ConnectionEventListener
物件在新 PooledConnection
物件中註冊。當關閉連接或發生錯誤時,連接池管理器(作為偵聽器)獲取包括 ConnectionEvent
物件在內的通知。
如果連接池管理器支持 Statement
池,則對於可以通過調用 DatabaseMetaData.supportsStatementPooling
方法確定的 PreparedStatements
,連接池管理器將向新 PooledConnection
物件註冊為 StatementEventListener
物件。當 PreparedStatement
關閉或者發生錯誤時,連接池管理器(作為一個偵聽器)獲取一個通知,該通知包括 StatementEvent
物件。
DataSource
物件建立的連接可參與分佈式事務。這為應用程序提供了在單個事務中佔用多個伺服器上的資料源的能力。
用於分佈式事務的類別和介面是:
XADataSource
XAConnection
XAConnection
介面是從 PooledConnection
介面派生的,因此適用於入池連接的內容也適用於作為分佈式事務一部分的連接。中間層中的事務管理器透明地處理所有動作。應用程序程式碼中的唯一變化是,應用程序不能執行任何與事務管理器對事務的處理有衝突的操作。更明確地說,應用程序不能調用方法 Connection.commit
或 Connection.rollback
,並且它不能將連接設置為自動提交網要(即它不能調用 Connection.setAutoCommit(true)
)。
應用程序不必為參與分佈式事務而執行任何特殊操作。它只需要通過 DataSource.getConnection
方法創建到所需的資料源的連接,就跟它通常的做法一樣。事務管理器在後台管理事務。XADataSource
介面創建 XAConnection
物件,每個 XAConnection
物件創建事務管理器用於管理連接的 XAResource
物件。
RowSet
介面在後台與各種其他類別和介面一起使用。RowSet 可分為三個類別別。
RowSetListener
RowSet
物件是 JavaBeansTM 元件,因為它具有屬性並參與 JavaBeans 事件通知機制。RowSetListener
介面由希望在特定 RowSet
物件發生事件時獲得通知的元件實作。這種元件通過 RowSet.addRowSetListener
方法在 rowset 中作為偵聽器註冊。
當 RowSet
物件更改它的其中一行、所有行或者移動其指針時,它將同時通知向它註冊的所有偵聽器。偵聽器通過執行對它調用的通知方法的實作作出反應。
RowSetEvent
RowSet
物件創建一個 RowSetEvent
的實例並將其傳遞到偵聽器。偵聽器可以使用此 RowSetEvent
物件來找出具有該事件的 rowset。
RowSetMetaData
ResultSetMetaData
介面派生而來,提供關於 RowSet
物件中的列的資訊。應用程序可以使用 RowSetMetaData
方法來找出 rowset 套件含的列數和每列可以包含的資料種類別。
RowSetMetaData
介面提供用於設置關於列的資訊的方法,但是應用程序通常不使用這些方法。當應用程序調用 RowSet
方法 execute
時,RowSet
物件將包含新的行設置,並且其 RowSetMetaData
物件將在內部被更新,以包含關於新行的資訊。
RowSetInternal
介面的 RowSet
物件可以調用與之關聯的 RowSetReader
物件來填充資料。它還可以調用與之關聯的 RowSetWriter
物件將對其行所做的任何更改寫回資料源,它的行最初便是從該資料源獲取的。保持連接到其資料源的 rowset 不需要使用 reader 和 writer,因為它可以直接對資料源進行操作。
RowSetInternal
RowSetInternal
介面,RowSet
物件獲取對其內部狀態的存取權限,並且能夠調用其 reader 和 writer。rowset 關注其當前行的值和當前行之前那個行的值(稱為原始 值)。rowset 還關註:(1)已經設置的用於命令的參數(2)傳遞給它的連接(如果有)。rowset 在後台使用 RowSetInternal
方法獲取對此資訊的存取權限。應用程序通常不直接調用這些方法。
RowSetReader
RowSetInternal
介面的非連接 RowSet
物件可以調用其 reader(與之關聯的 RowSetReader
物件)來填充資料。當應用程序調用 RowSet.execute
方法時,該方法調用 rowset 的 reader 來執行大多數操作。實作與實作可能大不相同,但一般過程是:reader 建立到資料源的連接,從資料源讀取資料並使用該資料填充 rowset,然後關閉連接。reader 還可能更新其 rowset 的 RowSetMetaData
物件。rowset 的內部狀態也將被更新,或者由 reader 進行或者由 RowSet.execute
方法直接進行。
RowSetWriter
RowSetInternal
介面的非連接 RowSet
物件可以調用其 writer(與之關聯的 RowSetWriter
物件)將更改寫回底層資料源。實作與實作可能大不相同,但一般情況下,writer 將執行以下操作:
RowSet
介面可以使用多種方式實作,任何人都可以編寫實作。鼓勵開發人員充分發揮想像力,探索使用 rowset 的新方式。
重要注意事項:對於使用標記有 "Since 1.6" 的 API,必須使用實作 JDBC 4.0 API 的 JDBC 技術驅動程序才能運行。必須檢查驅動程序文檔,以確保它實作了所需使用的特定功能。
javax.sql
套件中的類別和實作的詳細資訊:
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個軟體套件 下一個軟體套件 | 框架 無框架 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。