JavaTM Platform
Standard Ed. 6

패키지 javax.sql.rowset.serial

Java 프로그램 언어에서의 SQL 형과 데이터형의 직렬화 가능 매핑을 가능하게 하는 유틸리티 클래스를 제공합니다.

참조처:
          설명

클래스의 개요
SerialArray Array 객체의 직렬화 버젼이며, Java 프로그램 언어에서의 SQL ARRAY 치의 매핑입니다.
SerialBlob Java 프로그램 언어에서의 SQL BLOB 치의 직렬화 매핑입니다.
SerialClob Java 프로그램 언어에서의 SQL CLOB 치의 직렬화 매핑입니다.
SerialDatalink Java 프로그램 언어에서의 SQL DATALINK 치의 직렬화 매핑입니다.
SerialJavaObject Java 프로그램 언어에서의 SQL JAVA_OBJECT 치의 직렬화 가능 매핑입니다.
SerialRef Ref 객체의 직렬화 매핑이며, Java 프로그램 언어에서의 SQL REF 치의 매핑입니다.
SerialStruct Java 프로그램 언어에서의 SQL 구조형의 직렬화 매핑입니다.
SQLInputImpl 사용자 정의형 (UDT)의 커스텀 매핑용 입력 스트림입니다.
SQLOutputImpl 커스텀 맵 된 사용자 정의형 (UDT)의 속성을 데이타베이스에 재차 기입하기 위한 출력 스트림입니다.
 

예외의 개요
SerialException DATALINK 나 JAVAOBJECT 에 가세해,BLOB, CLOB, STRUCT, ARRAY 등의 SQL 형의 직렬화 또는 직렬화 복원시의 에러를 나타냅니다.
 

패키지 javax.sql.rowset.serial 의 설명

Java 프로그램 언어에서의 SQL 형과 데이터형의 직렬화 가능 매핑을 가능하게 하는 유틸리티 클래스를 제공합니다.

표준 JDBC RowSet 구현은, 이러한 유틸리티 클래스를, 미접속의 RowSet 객체를 직렬화하기 위한 보조로서 이용할 수 있습니다. 미접속의 RowSet 를 회선 경유로 다른 VM 에 전송 하거나 어플리케이션내의 레이어간에 전송 하거나 하는 경우에 편리합니다.

1.0 SerialArray

Java 프로그램 언어에서의 SQL ARRAY 치의 직렬화 가능 매핑입니다.

SerialArray 클래스는, Array 객체로부터 SerialArray 인스턴스를 작성하기 위한 생성자 과 기저형과 그 SQL 명을 취득하기 위한 메소드와SerialArray 객체의 일부 또는 전부를 카피하기 위한 메소드를 제공합니다.

2.0 SerialBlob

Java 프로그램 언어에서의 SQL BLOB 치의 직렬화 가능 매핑입니다.

SerialBlob 클래스는, Blob 객체로부터 인스턴스를 작성하기 위한 생성자 을 제공합니다. Blob 객체는,SerialBlob 객체를 구축하기 전에, 클라이언트에 SQL BLOB 치의 데이터를 건네줄 필요가 있습니다. SQL BLOB 치의 데이터는, 클라이언트상에서,Blob.getBytes 메소드에 의해 바이트 배열로서 생성됩니다. 또는,Blob.getBinaryStream 메소드에 의해 미해석의 바이트 스트림로서 생성됩니다.

SerialBlob 메소드는,SerialBlob 객체를 바이트 배열 또는 스트림로서 카피할 수 있습니다. 게다가SerialBlob 객체내에서, 지정된 바이트 패턴이나 Blob 객체를 검색하는 기능도 제공합니다.

3.0 SerialClob

Java 프로그램 언어에서의 SQL CLOB 치의 직렬화 가능 매핑입니다.

SerialClob 클래스는,Clob 객체로부터 인스턴스를 작성하기 위한 생성자 을 제공합니다. Clob 객체는,SerialClob 객체를 구축하기 전에, 클라이언트에 SQL CLOB 치를 건네줄 필요가 있습니다. SQL CLOB 치의 데이터는, 클라이언트상에서, Unicode 문자의 스트림로서 생성됩니다.

SerialClob 메소드는,SerialClob 객체로부터 부분 캐릭터 라인을 취득하거나 문자 패턴의 개시 위치를 검색하거나 하는 기능을 제공합니다.

5.0 SerialDatalink

Java 프로그램 언어에서의 SQL DATALINK 치의 직렬화 가능 매핑입니다. DATALINK 치는, 생성원의 데이터 소스에 의해 관리되는 부하의 데이터 소스의 외부의 파일을 참조합니다.

RowSet 구현은,RowSet.getURL() 메소드를 사용해, 외부 데이터의 조작용의 java.net.URL 객체를 취득할 수 있습니다.

      java.net.URL url = rowset.getURL(1);

6.0 SerialJavaObject

Java 프로그램 언어에서의 SQL JAVA_OBJECT 치의 직렬화 가능 매핑입니다. Java 객체 인스턴스가 Serializable 인터페이스를 구현하면(자) 상정해, 직렬화 처리를 단순하게 랩 합니다.

그러나, Java 객체가 현재 직렬화 가능하지 않고, 직렬화 처리를 실행할 수 없는 경우, 이 클래스는, 객체 인스턴스를 직렬화 가능한 상태로 하기 (위해)때문에, static 멤버 이외의 모든 멤버를 직렬화하려고 합니다. static 필드나 일시 필드는 직렬화할 수 없습니다. 직렬화하려고 하면(자),SerialException 가 throw 됩니다.

7.0 SerialRef

SQL REF 형과 Java 프로그램 언어간의 직렬화 가능 매핑입니다.

SerialRef 클래스는,Ref 형으로부터 SerialRef 인스턴스를 작성하기 위한 생성자 과Ref 객체형을 취득 및 설정하기 위한 메소드를 제공합니다.

8.0 SerialStruct

Java 프로그램 언어에서의 SQL 구조형의 직렬화 가능 매핑입니다. 아직 직렬화 가능한 상태에 없는 속성은, 직렬화 가능 폼에 맵 됩니다. 속성 그 자체가 구조형인 경우도, 그 속성의 것 아직 직렬화 가능한 상태에 없는 속성은, 직렬화 가능 폼에 맵 됩니다.

게다가Map 객체가 몇개의 생성자 또는 getAttributes 메소드에게 건네지는 경우, 구조형은,Map 객체로 지정된 매핑에 따라, 커스텀 맵 됩니다.
SerialStruct 클래스는,Struct 객체로부터 인스턴스를 작성하기 위한 생성자 과 데이타베이스내의 SQL 구조형의 SQL 형명을 취득하기 위한 메소드와 그 속성치를 취득하기 위한 메소드를 제공합니다.

9.0 SQLInputImpl

사용자 정의형 (UDT)의 커스텀 매핑용 입력 스트림입니다. SQLInputImpl 객체는, UDT 의 속성에 상당하는 값의 스트림을 포함하는 입력 스트림입니다. 이 클래스는, 커스텀 매핑을 가지는 SQL 구조형 또는 SQL 개별형으로 getObject 메소드가 불려 갈 때, 배후에서 드라이버에 의해 사용됩니다. 프로그래머가 직접 SQLInputImpl 메소드를 호출할 것은 없습니다.

SQLInputImpl 클래스는,ResultSet 취득 메소드 와 유사한 일련의 리더 메소드 세트를 제공합니다. 이러한 메소드에는,SQLInputImpl 객체내의 값의 읽기를 가능하게 하는 기능이 있습니다. 최종치가 SQL NULL 였는지 어떠했는지의 확인에는,wasNull 메소드가 사용됩니다.



Map 객체를 취하는 생성자 또는 취득 메소드가 불려 가면(자), JDBC 드라이버는 SQLData.getSQLType 메소드를 호출해, 커스텀 맵 되는 UDT 의 SQL 형을 확정합니다. 드라이버는,SQLInputImpl 의 인스턴스를 작성해, UDT 의 속성을 이식합니다. 계속되어, 입력 스트림을 SQLData.readSQL 메소드에 건네줍니다. 그러자(면), 이 메소드는,SQLInputImpl 메소드를 호출해, 입력 스트림로부터 속성을 읽어냅니다.

10.0 SQLOutputImpl

커스텀 맵 된 사용자 정의형 (UDT)의 속성을 데이타베이스에 재차 기입하기 위한 출력 스트림입니다. 드라이버는 이 인터페이스를 내부에서 사용합니다. 이 인터페이스의 메소드가 어플리케이션 프로그래머에 의해 직접 불려 갈 것은 없습니다.
어플리케이션이 PreparedStatement.setObject 메소드를 호출하면(자), 드라이버는 커스텀 매핑을 이용해, 기입해지는 값이 UDT 형일지 어떨지를 확인합니다. UDT 형이면, 이 UDT 의 SQLData 를 구현하는 클래스의 Class 객체를 포함하는 형태 맵내에 엔트리가 존재합니다. 기입해지는 값이 SQLData 의 인스턴스인 경우, 드라이버는 SQLOutputImpl 의 인스턴스를 작성해,SQLData.writeSQL 메소드에 건네줍니다. 그러자(면),writeSQL 메소드에 의해 적절한 SQLOutputImpl 라이터 메소드가 불려 가SQLData 객체로부터 SQLOutputImpl 출력 스트림에, SQL 사용자 정의형의 표현으로서 데이터가 기입해집니다.

커스텀 매핑

JDBC API 는, SQL 구조형 또는 DISTINCT 형과 Java 프로그램 언어와의 매핑 기구를 제공합니다. 일반적으로, 구조형은 클래스, 그 속성은 클래스내의 필드에 맵 됩니다만 (DISTINCT 형은 속성을 1 개만 가지는 것이라고 보여진다), 그 외에도 다양한 가능성이 있습니다. 기본적으로, 매핑의 수에 제한은 없습니다.

프로그래머는,SQLData 인터페이스를 구현하는 것으로써, 매핑을 정의합니다. 예를 들어, NAME, TITLE, PUBLISHER 의 각 속성을 가지는, AUTHORS 라고 하는 SQL 구조형이 있다고 합니다. 이 SQL 구조형은, Authors 라는 이름의 Java 클래스에 맵 됩니다. Authors 클래스에는, AUTHORS 의 각 속성에 대응하는 필드, name, title, publisher 를 갖게할 수가 있습니다. 이 경우,SQLData 의 구현은 다음의 예에 같게 됩니다.

   public class Authors implements SQLData {
       public String name;
       public String title;
       public String publisher;

       private String sql_type;
       public String getSQLTypeName() {
           return sql_type;
       }

       public void readSQL(SQLInput stream, String type)
                                  throws SQLException  {
           sql_type = type;
           name = stream.readString();
           title = stream.readString();
           publisher = stream.readString();
       }

       public void writeSQL(SQLOutput stream) throws SQLException {
           stream.writeString(name);
           stream.writeString(title);
           stream.writeString(publisher);
       }
   } 
java.util.Map 객체는, SQL 구조형과 Authors 클래스의 매핑의 관련지어에 사용되고 있습니다. 다음의 코드의 발췌에서는,Map 객체를 작성해,AUTHORSAuthors 를 관련짓는 엔트리를 지정합니다.
    java.util.Map map = new java.util.HashMap();
    map.put("SCHEMA_NAME.AUTHORS", Class.forName("Authors");
Map 객체 map 에, SQL 구조형의 완전 수식명과 Authors 클래스의 Class 객체로부터 완성되는 엔트리가 추가됩니다. 이 엔트리가 메소드에게 건네지는 것으로, 드라이버는,AUTHORSAuthors 의 매핑의 관계를 파악할 수 있습니다.

미접속의 RowSet 객체의 경우, 커스텀 매핑을 실시하는 생성자 또는 메소드에 Map 객체가 건네받았을 경우에게만, 커스텀 매핑을 합니다. 접속이 끝난 RowSet 객체의 경우, 데이터 소스와의 접속이 확보되고 있으므로, 상황은 다릅니다. 커스텀 매핑을 실시하는 메소드가 미접속의 RowSet 객체에 의해 불려 가면(자), 이 메소드는, 사용되는 Connection 객체에 관련지을 수 있었던 Map 객체를 사용합니다. 즉, 맵을 지정하지 않는 경우, 디폴트로서 접속의 형태 맵이 사용됩니다.


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 도 참조해 주세요.