|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一個類別 下一個類別 | 框架 無框架 | |||||||||
| 摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 | |||||||||
java.lang.Objectjavax.sql.rowset.spi.SyncProvider
public abstract class SyncProvider
為非連接 RowSet 物件提供 reader/writer 功能的同步機制。SyncProvider 實作是一個擴展了 SyncProvider 抽象類別的類別。
SyncProvider 實作由一個唯一 ID 標識,該 ID 即其完全限定類別名稱。此名稱必須向 SyncFactory SPI 註冊,這樣才能使該實作可用於所有的 RowSet 實作。參考實作中的處理器機制使用此名稱來實例化該實作,然後該實作可以通過其 reader(javax.sql.RowSetReader 物件)和 writer(javax.sql.RowSetWriter 物件)提供一個 RowSet 物件。
Jdbc RowSet 實作規範提供 SyncProvider 抽象類別的兩個參考實作:RIOptimisticProvider 和 RIXMLProvider。RIOptimisticProvider 可以使用 RowSetReader 物件和 RowSetWriter 物件設置任何 RowSet 實作。但是,只有 RIXMLProvider 實作可以設置 XmlReader 物件和 XmlWriter 物件。WebRowSet 物件使用 XmlReader 物件以 XML 格式讀取資料,然後使用該資料填充本身。它使用 XmlWriter 物件以 XML 格式將本身寫入到串流或 java.io.Writer 物件。
SyncProvider 實作的指南,應注意以下事項:
SyncProvider 實作的名稱是其完全限定類別名稱。
providers 的套件中提供 SyncProvider 實作。
例如,如果名為 Fred, Inc. 的供應商提供了 SyncProvider 實作,則可能擁有以下內容:
Vendor name: Fred, Inc.
Domain name of vendor: com.fred
Package name: com.fred.providers
SyncProvider implementation class name: HighAvailabilityProvider
Fully qualified class name of SyncProvider implementation:
com.fred.providers.HighAvailabilityProvider
以下程式碼行使用完全限定名稱向 SyncFactory 靜態實例註冊此實作。
SyncFactory.registerProvider(
"com.fred.providers.HighAvailabilityProvider");
通過參考實作提供的預設 SyncProvider 物件使用以下名稱:
com.sun.rowset.providers.RIOptimisticProvider
供應商可以通過發送電子郵件到 jdbc@sun.com 向 Sun Microsystems 公司註冊 SyncProvider 實作類別名稱。Sun 將維護列出可用 SyncProvider 實作的資料庫,以便與相容 RowSet 實作一起使用。此資料庫將類似於已維護列出可用 JDBC 驅動程序的資料庫。
有關如何實作一個新的 SyncProvider 實作的附加指南,供應商應參考參考實作同步提供者。
RowSet 物件如何獲取其提供者Rowset 物件可以使用以下兩種方法之一獲取對 SyncProvider 物件的存取:
CachedRowSet crs = new CachedRowSet(
"com.fred.providers.HighAvailabilitySyncProvider");
setSyncProvider 方法
CachedRowSet crs = new CachedRowSet();
crs.setSyncProvider("com.fred.providers.HighAvailabilitySyncProvider");
預設情況下,RowSet 同步提供者的參考實作總是可用於 Java 平臺。如果沒有正確地註冊任何其他可插入的同步提供者,則 SyncFactory 將自動產生一個預設 SyncProvider 參考實作的實例。這樣,在前述的程式碼片段中,如果沒有任何名為 com.fred.providers.HighAvailabilitySyncProvider 的實作已向 SyncFactory 實例註冊,則 crs 將被分派一個參考實作中的預設提供者,它是 com.sun.rowset.providers.RIOptimisticProvider。
RowSet 物件和資料源之間的更新與初始查詢或底層資料源約束髮生衝突,則這將導致所有非連接 RowSet 實作及其指派的 SyncProvider 實作的行為不明確。不定義此類別衝突發生時的行為給 SyncProvider 實作提供更大的靈活性,使它能自己決定如何反應。
SyncProvider 實作可以選擇實作特定的處理程序來處理查詢衝突的子集。但是,如果 SyncProvider 實作沒有處理原始查詢衝突或更一般的資料源約束衝突,則所有的 SyncProvider 物件必須拋出 SyncProviderException。
VIEW 形成)填充任何非連接或連接的 RowSet 物件。雖然在許多情況下能夠對底層視圖執行更新,但是此類別更新需要附加的元資料,並且該資料可能不同。SyncProvider 類別提供兩個常數來指示實作是否支持更新 SQL VIEW。
NONUPDATABLE_VIEW_SYNC - 指示將 SQL VIEW 作為 RowSet 物件的資料底層源的情況下,SyncProvider 實作不支持與它的同步。
UPDATABLE_VIEW_SYNC - 指示將 SQL VIEW 作為資料底層源的情況下,SyncProvider 實作支持與它的同步。
如果使用取自 SQL VIEW 的資料填充 RowSet 物件,則預設情況是它不可更新。
SyncProvider 常數SyncProvider 類別提供三個常數集,用作返回值或 SyncProvider 方法的參數。可以實作 SyncProvider 物件來使用不同的關心程度執行 RowSet 物件與其底層資料源之間的同步。第一組常數指示如何處理同步。例如,GRADE_NONE 指示 SyncProvider 物件將不會注意查看哪些資料有用,只是將 RowSet 資料寫入資料源。GRADE_MODIFIED_AT_COMMIT 指示提供者只檢查修改資料的有效性。其他等級檢查所有資料的有效性,或者在修改或載入資料時設置鎖定。
SyncProvider 物件的同步等級的常數
SyncProvider 物件是否可以對 SQL VIEW 執行更新的常數
SyncFactory,
SyncFactoryException| 欄位摘要 | |
|---|---|
static int |
DATASOURCE_DB_LOCK
指示鎖定整個資料源,該資料源是正在使用此 SyncProvider 物件的 RowSet 物件的資料源。 |
static int |
DATASOURCE_NO_LOCK
指示在原始資料源上不保持任何鎖定。 |
static int |
DATASOURCE_ROW_LOCK
指示鎖定原始 SQL 語句涉及的行,該語句用於填充正在使用此 SyncProvider 物件的 RowSet 物件。 |
static int |
DATASOURCE_TABLE_LOCK
指示鎖定原始 SQL 語句涉及的所有表,該語句用於填充正在使用此 SyncProvider 物件的 RowSet 物件。 |
static int |
GRADE_CHECK_ALL_AT_COMMIT
指示關於原始資料源的高層級別樂觀同步等級。 |
static int |
GRADE_CHECK_MODIFIED_AT_COMMIT
指示關於原始資料源的低層級別樂觀同步等級。 |
static int |
GRADE_LOCK_WHEN_LOADED
指示關於原始資料源的最悲觀同步等級。 |
static int |
GRADE_LOCK_WHEN_MODIFIED
指示關於原始資料源的悲觀同步等級。 |
static int |
GRADE_NONE
指示沒有提供與原始資料源的同步。 |
static int |
NONUPDATABLE_VIEW_SYNC
指示 SyncProvider 實作不支持 RowSet 物件和用於填充它的 SQL VIEW 之間的同步。 |
static int |
UPDATABLE_VIEW_SYNC
指示 SyncProvider 實作支持 RowSet 物件和用於填充它的 SQL VIEW 之間的同步。 |
| 建構子摘要 | |
|---|---|
SyncProvider()
創建預設的 SyncProvider 物件。 |
|
| 方法摘要 | |
|---|---|
abstract int |
getDataSourceLock()
返回在此 SyncProvider 實作中活動的當前資料源鎖定嚴重性級別。 |
abstract int |
getProviderGrade()
返回一個常數,它指示 RowSet 物件希望從此 SyncProvider 物件獲得的同步等級。 |
abstract String |
getProviderID()
返回此 SyncProvider 物件的唯一標識符。 |
abstract RowSetReader |
getRowSetReader()
返回 javax.sql.RowSetReader 物件,它可以用於填充帶有資料的 RowSet 物件。 |
abstract RowSetWriter |
getRowSetWriter()
返回 javax.sql.RowSetWriter 物件,它可以用於將 RowSet 物件的資料寫回底層資料源。 |
abstract String |
getVendor()
返回此 SyncProvider 實例的供應商名稱 |
abstract String |
getVersion()
返回此 SyncProvider 實例的發行版本。 |
abstract void |
setDataSourceLock(int datasource_lock)
按照 datasource_lock 指示的級別在底層資料源上設置鎖定。 |
abstract int |
supportsUpdatableView()
返回此 SyncProvider 實作是否可以執行 RowSet 物件和資料源(RowSet 從中獲取其資料)中的 SQL VIEW 之間的同步。 |
| 從類別 java.lang.Object 繼承的方法 |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| 欄位詳細資訊 |
|---|
public static int GRADE_NONE
SyncProvider 實作僅嘗試將 RowSet 物件中的更新寫入底層資料源,而不檢查任何資料的有效性。
public static int GRADE_CHECK_MODIFIED_AT_COMMIT
SyncProvider 實作只檢查已經更改的行。
public static int GRADE_CHECK_ALL_AT_COMMIT
SyncProvider 實作將檢查所有的行,包括沒有更改的行。
public static int GRADE_LOCK_WHEN_MODIFIED
SyncProvider 實作將鎖定原始資料源中的行。
public static int GRADE_LOCK_WHEN_LOADED
SyncProvider 實作將鎖定用於填充 RowSet 物件的原始語句所影響的整個視圖和/或表。
public static int DATASOURCE_NO_LOCK
RowSet 物件沒有其他指示,則這是所有 SyncProvider 實作的預設鎖定設置。
public static int DATASOURCE_ROW_LOCK
SyncProvider 物件的 RowSet 物件。
public static int DATASOURCE_TABLE_LOCK
SyncProvider 物件的 RowSet 物件。
public static int DATASOURCE_DB_LOCK
SyncProvider 物件的 RowSet 物件的資料源。
public static int UPDATABLE_VIEW_SYNC
SyncProvider 實作支持 RowSet 物件和用於填充它的 SQL VIEW 之間的同步。
public static int NONUPDATABLE_VIEW_SYNC
SyncProvider 實作不支持 RowSet 物件和用於填充它的 SQL VIEW 之間的同步。
| 建構子詳細資訊 |
|---|
public SyncProvider()
SyncProvider 物件。
| 方法詳細資訊 |
|---|
public abstract String getProviderID()
SyncProvider 物件的唯一標識符。
SyncProvider 物件的完全限定類別名的 String 物件public abstract RowSetReader getRowSetReader()
javax.sql.RowSetReader 物件,它可以用於填充帶有資料的 RowSet 物件。
javax.sql.RowSetReader 物件public abstract RowSetWriter getRowSetWriter()
javax.sql.RowSetWriter 物件,它可以用於將 RowSet 物件的資料寫回底層資料源。
javax.sql.RowSetWriter 物件public abstract int getProviderGrade()
RowSet 物件希望從此 SyncProvider 物件獲得的同步等級。
public abstract void setDataSourceLock(int datasource_lock)
throws SyncProviderException
SyncProvider 為能成功同步而調整其行為,即增加或減少其提供的樂觀級別。
datasource_lock - 以下常數之一,它指示所需資料源鎖定的嚴重性級別:
SyncProvider.DATASOURCE_NO_LOCK,
SyncProvider.DATASOURCE_ROW_LOCK,
SyncProvider.DATASOURCE_TABLE_LOCK,
SyncProvider.DATASOURCE_DB_LOCK,
SyncProviderException - 如果設置不支持的資料源鎖定級別。getDataSourceLock()
public abstract int getDataSourceLock()
throws SyncProviderException
SyncProvider 實作中活動的當前資料源鎖定嚴重性級別。
SyncProvider 物件中活動的資料源鎖定的當前級別;是以下常數之一:
SyncProvider.DATASOURCE_NO_LOCK,
SyncProvider.DATASOURCE_ROW_LOCK,
SyncProvider.DATASOURCE_TABLE_LOCK,
SyncProvider.DATASOURCE_DB_LOCK
SyncProviderExceptiom - 如果在確定資料源鎖定級別時發生錯誤。
SyncProviderExceptionsetDataSourceLock(int)public abstract int supportsUpdatableView()
SyncProvider 實作是否可以執行 RowSet 物件和資料源(RowSet 從中獲取其資料)中的 SQL VIEW 之間的同步。
int,表示此 SyncProvider 物件是否支持更新 SQL VIEW;它是以下常數之一:SyncProvider.UPDATABLE_VIEW_SYNC、SyncProvider.NONUPDATABLE_VIEW_SYNCpublic abstract String getVersion()
SyncProvider 實例的發行版本。
String,它詳述了 SyncProvider 實作的發行版本public abstract String getVendor()
SyncProvider 實例的供應商名稱
String,它詳述了此 SyncProvider 實作的供應商名稱
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一個類別 下一個類別 | 框架 無框架 | |||||||||
| 摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 | |||||||||
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。