BaseRowSet
BaseRowSet (기본 행 집합)
RowSet 객체에 기본 기능을 제공하는 추상 클래스입니다. 기본 기능에는 모든 JavaBeans 컴포넌트가 구현해야 하는 속성 보유와 이벤트 알림이 포함됩니다.
본문
BaseRowSet 클래스는 모든 RowSet 구현의 핵심 기능을 제공합니다. 모든 표준 구현은 이 클래스를 하나 이상의 RowSet 인터페이스와 함께 사용해 표준 공급업체별 구현을 제공할 수 있어요. 모든 구현은 JdbcRowSet, CachedRowSet, JoinRowSet, FilteredRowSet, WebRowSet 중 적어도 하나의 RowSet 인터페이스를 구현해야 하므로, BaseRowSet을 확장한 구현도 반드시 RowSet 인터페이스 중 하나를 구현해야 합니다.
BaseRowSet 클래스는 다음을 제공합니다.
- 속성 — 현재 속성을 저장하는 필드
- 속성을 설정하고 얻는 메서드
- 이벤트 알림
RowSet객체의 명령(command)에 매개변수를 설정하는 세터(setter) 메서드의 완전한 집합- 스트림 — 스트림 인스턴스를 저장하는 필드와 스트림 타입을 나타내는 상수
모든 행셋은 속성 집합을 유지하며, 보통 도구를 사용해 설정합니다. 예를 들어 ResultSet 객체에서 데이터를 얻는 행셋은 데이터베이스 연결에 필요한 속성을 설정해야 합니다. DriverManager로 연결하면 JDBC URL, 사용자 이름, 비밀번호 속성을 설정해야 하고, 선호되는 방식인 DataSource 객체로 연결하면 JDBC URL 대신 데이터 소스의 논리적 이름과 사용자 이름·비밀번호 속성을 설정합니다. DataSource를 사용하려면 그 객체가 JNDI(Java Naming and Directory Interface)를 쓰는 네이밍 서비스에 등록되어 있어야 해요.
명령과 그 매개변수 측면에서, 행셋은 관계형 데이터베이스에서 데이터를 얻을 때 ResultSet 객체를 만드는 명령(질의)을 실행합니다. 질의에 설정할 값의 자리 표시자가 있으면 BaseRowSet 세터 메서드로 값을 설정해요. 예를 들어:
crs.setCommand("SELECT FIRST_NAME, LAST_NAME, ADDRESS FROM CUSTOMERS"
+ "WHERE CREDIT_LIMIT > ? AND REGION = ?");
crs.setInt(1, 5000);
crs.setString(2, "West");
이 예에서 CREDIT_LIMIT과 REGION의 값은 물음표(?)로 표시된 자리 표시자 매개변수입니다. 첫 번째 물음표는 매개변수 1번, 두 번째는 2번이에요. Array, Clob, Blob, Ref 객체를 명령 매개변수로 설정하면 각각 SerialArray, SerialClob, SerialBlob, SerialRef 객체로 저장됩니다.
세터 메서드로 설정한 자리 표시자 매개변수는 내부 Hashtable 객체에 저장되고, 프리미티브는 그 Object 타입(예: byte는 Byte, int는 Integer)으로 저장됩니다. execute가 호출되면 Hashtable의 값이 명령의 해당 자리 표시자에 대입되고, getParams는 Hashtable의 값을 Object 인스턴스 배열로 돌려줍니다.
public static final int UNICODE_STREAM_PARAM
public static final int BINARY_STREAM_PARAM
public static final int ASCII_STREAM_PARAM
protected InputStream binaryStream
protected InputStream unicodeStream
protected InputStream asciiStream
protected Reader charStream
public BaseRowSet()
protected void initParams()
public void addRowSetListener(RowSetListener listener)
public void removeRowSetListener(RowSetListener listener)
public void setCommand(String cmd) throws SQLException
public String getCommand()
public void setUrl(String url) throws SQLException
public void setUsername(String name)
public void setPassword(String password)
public void setType(int type) throws SQLException
public void setConcurrency(int concurrency) throws SQLException
public void setMaxRows(int max) throws SQLException
public void setFetchSize(int rows) throws SQLException
public void setEscapeProcessing(boolean enable) throws SQLException
public void setQueryTimeout(int seconds) throws SQLException
public void setReadOnly(boolean value) throws SQLException
public void setTransactionIsolation(int level) throws SQLException
public void setMaxFieldSize(int max) throws SQLException
public void setInt(int parameterIndex, int x) throws SQLException
public void setString(int parameterIndex, String x) throws SQLException
public void setObject(int parameterIndex, Object x) throws SQLException
public void setNull(int parameterIndex, int sqlType) throws SQLException
public Object[] getParams() throws SQLException
기본 BaseRowSet 인스턴스는 여러 시작 값을 가집니다. 스크롤 가능한 커서를 가지며 다른 사람이 바꾼 내용은 보여주지 않고, 갱신 가능하며, 삭제된 행은 보여주지 않고, 드라이버의 명령 실행 시간 제한이 없고, 행 수 제한이 없고, 컬럼 바이트 수 제한이 없고, 커밋되지 않은 데이터는 보지 않으며, 이스케이프 처리가 켜져 있고, 연결의 타입 맵은 null이고, 명령의 자리 표시자 값을 저장하는 빈 Vector 객체를 가집니다.
crs.setMaxRows(500);
이 BaseRowSet를 확장한 클래스에서 구현한 메서드는 정의된 단언(assertion)을 위반할 때 SQLException을 던져야 하고, 재정의한 메서드가 연결 또는 데이터 소스 문제를 겪으면 추가로 SQLException을 던질 수 있습니다.