|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object javax.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
- 如果在確定資料源鎖定級別時發生錯誤。
SyncProviderException
setDataSourceLock(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。