JavaTM 2 Platform
Standard Ed. 6

軟體套件 javax.sql

為通過 JavaTM 程式語言進行伺服器端資料源存取和處理提供 API。

請參見:
          描述

介面摘要
CommonDataSource 此介面定義在 DataSourceXADataSourceConnectionPoolDataSource 之間公用的方法。
ConnectionEventListener 註冊該物件便可獲得由 PooledConnection 物件產生的事件的通知。
ConnectionPoolDataSource PooledConnection 物件的處理器。
DataSource 該處理器用於提供到此 DataSource 物件所表示的物理資料源的連接。
PooledConnection 為連接池管理提供鉤子 (hook) 的物件。
RowSet 該介面添加了對 JavaBeansTM 元件模型的 JDBC API 支持。
RowSetInternal 為了將自身呈現給 RowSetReaderRowSetWriter 物件的 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
 

軟體套件 javax.sql 的描述

為通過 JavaTM 程式語言進行伺服器端資料源存取和處理提供 API。此套件補充了 java.sql 套件,它從 1.4 版本開始包含在 Java 平臺、標準版 (Java SETM) 中。它保留了 Java 平臺、企業版 (Java EETM) 中的精華部分。

java.sql 套件中提供以下內容:

  1. DataSource 介面,用於建立到資料源的連接,是 DriverManager 的替代項。
  2. 連接池和語句池
  3. 分佈式事務
  4. Rowset

應用程序直接使用 DataSourceRowSet API,但連接池和分佈式事務 API 只能由中間層基礎設施在內部使用。

使用 DataSource 物件建立連接

javax.sql 套件提供建立到資料源的連接的首選方式。DriverManager 類別(原始機制)仍然有效,使用它的程式碼將繼續運行。然而,與 DriverManager 機制相比,較新的 DataSource 機制更為可取,因為有更多的優點。

下面是使用 DataSource 物件建立連接的主要優點:

驅動程序提供 DataSource 實作。特定的 DataSource 物件表示特定的物理資料源,DataSource 物件創建的每個連接都是到該物理資料源的連接。

資料源的邏輯名稱需要向使用 Java Naming and Directory InterfaceTM (JNDI) API 的命名服務註冊,通常由系統管理員或某個執行系統管理員職責的人執行。應用程序可以通過尋找註冊的邏輯名稱獲取它需要的 DataSource 物件。然後,應用程序可以使用 DataSource 物件創建到它所表示物理資料源的連接。

DataSource 物件可以實作為與中間層設施一起使用,這樣可將它產生的連接入池以供重用。使用這種 DataSource 實作的應用程序將自動獲取參與連接池的連接。DataSource 物件也可以實作為與中間層設施一起使用,這樣無需要任何特殊編碼即可將它所產生連接用於分佈式事務。

連接池和語句池

通過實作為與中間層連接池管理器一起使用的 DataSource 物件建立的連接將參與連接池。這能顯著地提高性能,因為創建新連接開銷很大。連接池允許使用和重用連接,因此可以極大地減少需要創建的新連接數。

連接池是完全透明的。此操作是在中間層 Java EE 配置中自動完成的,因此就應用程序而言,無需對程式碼進行任何更改。應用程序可以簡單地使用 DataSource.getConnection 方法獲取入池連接,並按使用任何 Connection 物件相同的方式使用該連接。

用於連接池的類別和介面是:

連接池管理器(三層體系結構的中間層中的設施)在後台使用這些類別和介面。當調用 ConnectionPoolDataSource 物件創建 PooledConnection 物件時,連接池管理器將作為 ConnectionEventListener 物件在新 PooledConnection 物件中註冊。當關閉連接或發生錯誤時,連接池管理器(作為偵聽器)獲取包括 ConnectionEvent 物件在內的通知。

如果連接池管理器支持 Statement 池,則對於可以通過調用 DatabaseMetaData.supportsStatementPooling 方法確定的 PreparedStatements,連接池管理器將向新 PooledConnection 物件註冊為 StatementEventListener 物件。當 PreparedStatement 關閉或者發生錯誤時,連接池管理器(作為一個偵聽器)獲取一個通知,該通知包括 StatementEvent 物件。

分佈式事務

與入池連接一樣,通過實作為與中間層基礎設施一起使用的 DataSource 物件建立的連接可參與分佈式事務。這為應用程序提供了在單個事務中佔用多個伺服器上的資料源的能力。

用於分佈式事務的類別和介面是:

這些介面由事務管理器使用;應用程序不直接使用它們。

XAConnection 介面是從 PooledConnection 介面派生的,因此適用於入池連接的內容也適用於作為分佈式事務一部分的連接。中間層中的事務管理器透明地處理所有動作。應用程序程式碼中的唯一變化是,應用程序不能執行任何與事務管理器對事務的處理有衝突的操作。更明確地說,應用程序不能調用方法 Connection.commitConnection.rollback,並且它不能將連接設置為自動提交網要(即它不能調用 Connection.setAutoCommit(true))。

應用程序不必為參與分佈式事務而執行任何特殊操作。它只需要通過 DataSource.getConnection 方法創建到所需的資料源的連接,就跟它通常的做法一樣。事務管理器在後台管理事務。XADataSource 介面創建 XAConnection 物件,每個 XAConnection 物件創建事務管理器用於管理連接的 XAResource 物件。

Rowset

RowSet 介面在後台與各種其他類別和介面一起使用。RowSet 可分為三個類別別。
  1. 事件通知

  2. 元資料
  3. Reader/Writer 設施
    實作 RowSetInternal 介面的 RowSet 物件可以調用與之關聯的 RowSetReader 物件來填充資料。它還可以調用與之關聯的 RowSetWriter 物件將對其行所做的任何更改寫回資料源,它的行最初便是從該資料源獲取的。保持連接到其資料源的 rowset 不需要使用 reader 和 writer,因為它可以直接對資料源進行操作。

RowSet 介面可以使用多種方式實作,任何人都可以編寫實作。鼓勵開發人員充分發揮想像力,探索使用 rowset 的新方式。

重要注意事項:對於使用標記有 "Since 1.6" 的 API,必須使用實作 JDBC 4.0 API 的 JDBC 技術驅動程序才能運行。必須檢查驅動程序文檔,以確保它實作了所需使用的特定功能。

套件規範

相關文檔

由 Addison-Wesley Longman 出版的 Java 系列書提供關於 javax.sql 套件中的類別和實作的詳細資訊:

從以下版本開始:
1.4

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only