JavaTM Platform
Standard Ed. 6

javax.sql.rowset.spi
클래스 SyncProvider

java.lang.Object 
  상위를 확장 javax.sql.rowset.spi.SyncProvider


public abstract class SyncProvider
extends Object

미접속의 RowSet 객체의 읽어내/기입 기능을 제공하는 동기기구입니다. SyncProvider 구현은,SyncProvider abstract 클래스를 확장하는 클래스입니다.  

SyncProvider 구현은, 일의의 ID (이 구현의 완전 수식 클래스명)로 식별됩니다. 이 이름을 SyncFactory SPI 에 등록해, 모든 RowSet 구현으로 사용할 수 있도록(듯이) 할 필요가 있습니다. 이 레퍼런스 구현의 팩토리 기구는, 이 이름을 사용해 구현을 인스턴스화합니다. 이것에 의해,RowSet 객체와 그 리더 (javax.sql.RowSetReader 객체) 및 라이터 (javax.sql.RowSetWriter 객체)를 제공할 수 있습니다.  

JDBC RowSet 구현 스펙에서는,SyncProvider abstract 클래스의 2 개의 레퍼런스 구현 (RIOptimisticProviderRIXMLProvider)을 제공하고 있습니다. RIOptimisticProvider 는 RowSetReader 객체와 RowSetWriter 객체에 의해, 모든 RowSet 구현을 설정할 수 있습니다. 다만,XmlReader 객체와 XmlWriter 객체를 설정할 수 있는 것은,RIXMLProvider 구현 뿐입니다. WebRowSet 객체는 XmlReader 객체를 사용해, XML 형식에서 데이터를 읽어내, 데이터를 자신에게 포함합니다. 또,XmlWriter 객체를 사용해, 자신을 XML 형식에서 스트림 또는 java.io.Writer 객체에 자신을 기입합니다.  

1.0 구현의 명명 규칙

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 
 

SyncProvider 구현 클래스명을 Sun Microsystems, Inc. 에 등록하고 싶은 벤더는, jdbc@sun.com 까지 전자 메일에서 연락해 주십시오. Sun 는,RowSet 준거 구현으로 사용할 수 있는 SyncProvider 구현의 일람을 데이타베이스로 관리하고 있습니다. 이 데이타베이스는, 사용 가능한 JDBC 드라이버의 데이타베이스와 자주(잘) 닮았습니다.  

벤더는, 레퍼런스 구현 동기 프로바이더를 참조해, 새로운 SyncProvider 구현의 구현 방법의 상세를 확인해 주세요.

2.0RowSet 객체가 프로바이더를 취득하는 순서

미접속의 Rowset 객체는, 다음의 몇개의 방법으로,SyncProvider 객체의 액세스를 취득할 수 있습니다.

Java 플랫폼에서는, 디폴트로,RowSet 동기 프로바이더의 레퍼런스 구현을 항상 사용할 수 있습니다. 그 외의 플러그 인 가능한 동기 프로바이더가 정상적으로 등록되지 않은 경우,SyncFactory 는 자동적으로 디폴트의 SyncProvider 레퍼런스 구현의 인스턴스를 생성합니다. 이 때문에, 상기의 코드의 발췌에서는,SyncFactory 인스턴스에 com.fred.providers.HighAvailabilitySyncProvider 라는 이름의 구현이 등록되지 않은 경우,crs 에는, 레퍼런스 구현내의 디폴트의 프로바이더 com.sun.rowset.providers.RIOptimisticProvider 를 할당할 수 있습니다.  

3.0 위반과 동기의 문제

미접속의 RowSet 객체와 데이터 소스간의 갱신이 원의 쿼리또는 부하의 데이터 소스의 제약에 위반했을 경우, 미접속의 모든 RowSet 구현과 지정된 SyncProvider 구현의 동작은 예측 불능이 됩니다. 이와 같이, 위반이 있었을 때의 동작을 정의하지 않는 것으로,SyncProvider 구현은, 최선의 대처 방법을 독자적으로 결정할 수가 있습니다.  

SyncProvider 구현은, 쿼리위반의 부분집합을 처리하는 핸들러를 구현할 수가 있습니다. 그러나,SyncProvider 구현으로 원의 쿼리위반 또는보다 일반적인 데이터 소스 제약 위반이 처리되지 않는 경우, 모든 SyncProvider 객체는 SyncProviderException 을 throw 할 필요가 있습니다.  

4.0 갱신 가능한 SQL 뷰

미접속 또는 접속 끝난 모든 RowSet 객체는, SQL VIEW 를 기본으로 작성된 SQL 쿼리로부터 이식 가능합니다. 그러나, 많은 경우, 갱신은 부하의 뷰에 대해서 실행되므로, 추가로서 각종 메타데이타가 필요하게 됩니다. SyncProvider 클래스는, 구현이 SQL VIEW 의 갱신을 지원할지 어떨지를 나타내는 2 개의 정수를 제공합니다.

SQL VIEW 의 데이터가 이식되었을 경우, 디폴트로,RowSet 객체는 갱신 불능이 됩니다.  

5.0 SyncProvider 정수

SyncProvider 클래스는,SyncProvider 메소드의 반환값 또는 파라미터로서 사용되는 3 개의 정수를 제공합니다. SyncProvider 객체를 구현해,RowSet 객체와 그 부하의 데이터 소스를 다양한 레벨로 동기 할 수가 있습니다. 최초의 정수 그룹은, 동기의 처리 방법을 나타냅니다. 예를 들어,GRADE_NONE 는,SyncProvider 객체가 유효한 데이터인지를 확인하지 않고, 단순하게 RowSet 데이터를 데이터 소스에 기입하는 것을 나타냅니다. GRADE_MODIFIED_AT_COMMIT 는, 프로바이더에 의해, 변경된 데이터만을 대상으로 타당성 검사를 하는 것을 나타냅니다. 이 외 , 모든 데이터의 타당성 검사를 실시하는 그레이드나, 데이터가 변경 또는 로드 되었을 때 락을 적용하는 그레이드가 있습니다.
  1. SyncProvider 객체의 동기의 그레이드를 나타내는 정수
  2. 데이터 소스로 설정하는 락을 나타내는 정수
  3. SyncProvider 객체가 SQL VIEW 의 갱신을 실행할 수 있을지 어떨지를 나타내는 정수
    이러한 정수에 대해서는, 섹션 4.0 을 참조

관련 항목:
SyncFactory , SyncFactoryException

필드의 개요
static int DATASOURCE_DB_LOCK
          이 SyncProvider 객체를 사용하고 있는 RowSet 객체의 데이터 소스가 되어 있는 데이터 전체에 락이 설정되는 것을 나타냅니다.
static int DATASOURCE_NO_LOCK
          원래의 데이터 소스상에 락이 보관 유지되지 않는 것을 나타냅니다.
static int DATASOURCE_ROW_LOCK
          이 SyncProvider 객체를 사용하고 있는 RowSet 객체의 이식에 사용된 원의 SQL 문의 영향을 받는 행에 락이 설정되는 것을 나타냅니다.
static int DATASOURCE_TABLE_LOCK
          이 SyncProvider 객체를 사용하고 있는 RowSet 객체의 이식에 사용된 원의 SQL 문의 영향을 받는 모든 테이블에 락이 설정되는 것을 나타냅니다.
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 ()
          이 SyncProvider 객체가 RowSet 객체에 제공할 수 있는 동기의 그레이드를 나타내는 정수를 돌려줍니다.
abstract  String getProviderID ()
          이 SyncProvider 객체를 나타내는 일의의 식별자를 돌려줍니다.
abstract  RowSetReader getRowSetReader ()
          javax.sql.RowSetReader 객체를 돌려줍니다.
abstract  RowSetWriter getRowSetWriter ()
          javax.sql.RowSetWriter 객체를 돌려줍니다.
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
 

필드의 상세

GRADE_NONE

public static int GRADE_NONE
원의 데이터 소스와의 동기가 일절 행해지지 않는 것을 나타냅니다. 이 그레이드를 돌려주는 SyncProvider 구현은,RowSet 객체내의 갱신 내용을, 데이터의 타당성 검사를 실시하지 않고 부하의 데이터 소스에 기입합니다.


GRADE_CHECK_MODIFIED_AT_COMMIT

public static int GRADE_CHECK_MODIFIED_AT_COMMIT
원래의 데이터 소스의 저레벨의 오프티미스틱 병행 동기의 그레이드를 나타냅니다. 이 그레이드를 돌려주는 SyncProvider 구현은, 변경된 행만을 체크합니다.


GRADE_CHECK_ALL_AT_COMMIT

public static int GRADE_CHECK_ALL_AT_COMMIT
원래의 데이터 소스의 고레벨의 오프티미스틱 병행 동기의 그레이드를 나타냅니다. 이 그레이드를 돌려주는 SyncProvider 구현은, 변경되어 있지 않은 것도 포함해 모든 행을 체크합니다.


GRADE_LOCK_WHEN_MODIFIED

public static int GRADE_LOCK_WHEN_MODIFIED
원래의 데이터 소스의 염세적인 병행 동기의 그레이드를 나타냅니다. 이 그레이드를 돌려주는 SyncProvider 구현은, 원래의 데이터 소스내의 행을 잠급니다.


GRADE_LOCK_WHEN_LOADED

public static int GRADE_LOCK_WHEN_LOADED
원래의 데이터 소스의 염세적인 병행 동기의 그레이드를 나타냅니다. 무엇보다 염세적인 (비관적)인 그레이드입니다. 이 그레이드를 돌려주는 SyncProvider 구현은,RowSet 객체의 이식에 사용된 원의 문장의 영향을 받는 뷰 및 테이블, 또는 그 어느쪽이든 전체를 잠급니다.


DATASOURCE_NO_LOCK

public static int DATASOURCE_NO_LOCK
원래의 데이터 소스상에 락이 보관 유지되지 않는 것을 나타냅니다. RowSet 객체의 관리하에 있는 것을 제외하는 모든 SyncProvider 구현의 디폴트의 락 설정입니다.


DATASOURCE_ROW_LOCK

public static int DATASOURCE_ROW_LOCK
SyncProvider 객체를 사용하고 있는 RowSet 객체의 이식에 사용된 원의 SQL 문의 영향을 받는 행에 락이 설정되는 것을 나타냅니다.


DATASOURCE_TABLE_LOCK

public static int DATASOURCE_TABLE_LOCK
SyncProvider 객체를 사용하고 있는 RowSet 객체의 이식에 사용된 원의 SQL 문의 영향을 받는 모든 테이블에 락이 설정되는 것을 나타냅니다.


DATASOURCE_DB_LOCK

public static int DATASOURCE_DB_LOCK
SyncProvider 객체를 사용하고 있는 RowSet 객체의 데이터 소스가 되어 있는 데이터 전체에 락이 설정되는 것을 나타냅니다.


UPDATABLE_VIEW_SYNC

public static int UPDATABLE_VIEW_SYNC
SyncProvider 구현이 RowSet 객체와 그 이식에 사용된 SQL VIEW 간의 동기를 지원하는 것을 나타냅니다.


NONUPDATABLE_VIEW_SYNC

public static int NONUPDATABLE_VIEW_SYNC
SyncProvider 구현이 RowSet 객체와 그 이식에 사용된 SQL VIEW 간의 동기를 지원하지 않는것을 나타냅니다.

생성자 의 상세

SyncProvider

public SyncProvider()
디폴트의 SyncProvider 객체를 작성합니다.

메소드의 상세

getProviderID

public abstract String  getProviderID()
SyncProvider 객체를 나타내는 일의의 식별자를 돌려줍니다.

반환값:
SyncProvider 객체의 완전 수식 클래스명을 가지는 String 객체

getRowSetReader

public abstract RowSetReader  getRowSetReader()
javax.sql.RowSetReader 객체를 돌려줍니다. 이 객체는,RowSet 객체에 데이터를 이식하기 위해서 사용할 수 있습니다.

반환값:
javax.sql.RowSetReader 객체

getRowSetWriter

public abstract RowSetWriter  getRowSetWriter()
javax.sql.RowSetWriter 객체를 돌려줍니다. 이 객체는,RowSet 객체의 데이터를 부하의 데이터 소스에 재차 기입하기 위해서(때문에) 사용할 수 있습니다.

반환값:
javax.sql.RowSetWriter 객체

getProviderGrade

public abstract int getProviderGrade()
SyncProvider 객체가 RowSet 객체에 제공할 수 있는 동기의 그레이드를 나타내는 정수를 돌려줍니다.

반환값:
다음의 int 정수의 언젠가. SyncProvider.GRADE_NONE, SyncProvider.GRADE_CHECK_MODIFIED_AT_COMMIT, SyncProvider.GRADE_CHECK_ALL_AT_COMMIT, SyncProvider.GRADE_LOCK_WHEN_MODIFIED, SyncProvider.GRADE_LOCK_WHEN_LOADED

setDataSourceLock

public abstract void setDataSourceLock(int datasource_lock)
                                throws SyncProviderException 
부하의 데이터 소스에,datasource_lock 로 지정된 레벨의 락을 설정합니다. 이것에 의해,SyncProvider 는, 동기 처리를 정상적으로 완료할 수 있도록(듯이) 오프티미스틱인 레벨 (낙관도)을 조절해, 그 동작을 조정합니다.

파라미터:
datasource_lock - 필요한 데이터 소스 락의 중요도 레벨을 나타낸다 다음의 몇개의 정수.
           SyncProvider.DATASOURCE_NO_LOCK,
           SyncProvider.DATASOURCE_ROW_LOCK,
           SyncProvider.DATASOURCE_TABLE_LOCK,
           SyncProvider.DATASOURCE_DB_LOCK
 
예외:
SyncProviderException - 설정된 데이터 소스 락의 레벨이 지원되어 있지 않은 경우
관련 항목:
getDataSourceLock()

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)

supportsUpdatableView

public abstract int supportsUpdatableView()
SyncProvider 구현이 RowSet 객체와 이 RowSet 객체가 데이터의 취득처로서 사용하는 데이터 소스내의 SQL VIEW 의 동기의 실행이 가능한가 어떤가를 돌려줍니다.

반환값:
SyncProvider 객체가 SQL VIEW 의 갱신을 지원할지 어떨지를 나타내는 int. 다음의 언젠가된다. SyncProvider.UPDATABLE_VIEW_SYNC, SyncProvider.NONUPDATABLE_VIEW_SYNC

getVersion

public abstract String  getVersion()
SyncProvider 인스턴스의 릴리스 버젼을 돌려줍니다.

반환값:
SyncProvider 구현의 릴리스 버젼을 나타내는 String

getVendor

public abstract String  getVendor()
SyncProvider 인스턴스의 벤더명을 돌려줍니다.

반환값:
SyncProvider 구현의 벤더명을 나타내는 String

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.