내용 목차
tbJDBC는 JDBC 4.0을 준수하고 있다. 다만, 표준에 따르면 필수적으로 구현해야하는 부분과 벤더별로 구현여부를 선택 가능한 부분을 구분하여 명시하고 있으며, 이러한 추가 기능에 대해서는 지원하지 않을 수도 있다. 본 장에서는 tbJDBC가 지원하는 JDBC 표준을 기능별로 설명한다.
tbJDBC에서 지원하는 주요한 인터페이스 메소드는 다음과 같다.
java.sql.Array
java.sql.Blob
java.sql.CallableStatement
java.sql.Clob
java.sql.Connection
java.sql.DatabaseMetaData
java.sql.Driver
java.sql.PreparedStatement
java.sql.ResultSet
java.sql.ResultSetMetaData
java.sql.Statement
java.sql.Struct
tbJDBC에서 지원하지 않는 인터페이스 메소드는 다음과 같다.
java.sql.Ref
java.sql.SQLData
java.sql.SQLInput
java.sql.SQLOutput
다음은 JDBC 2.0 표준 지원하는 주요 기능에 대한 설명이다.
tbJDBC에서 지원하는 결과 집합 기능은 다음과 같다.
Scrolling 기능을 지원하는 스크롤 가능한 결과 집합(Scrollable ResultSet)을 생성할 수 있다. 이 기능은 결과 집합을 전 방향 또는 후 방향으로 탐색할 수 있다. 또한 결과 집합 내에서 상대적이거나 절대적인 위치 이동도 할 수 있다.
결과 집합은 다음과 같이 3가지 타입으로 지정할 수 있다.
타입 | 설명 |
---|---|
Forward-only | 최초 생성될 때의 데이터 값으로 고정되며, 오직 정방향으로만 탐색할 수 있다. |
Scroll-insensitive | Forward-only 결과 집합과 마찬가지로 최초 생성될 때의 데이터 값으로 고정되지만, 스크롤 가능한 결과 집합의 특성을 가지므로 정방향, 역방향, 상대위치, 절대위치 등으로 탐색할 수 있다. |
Scroll-sensitive | 데이터베이스 변화에 민감하며, 데이터가 변경되는 경우 즉시 결과 집합에 반영된다. 따라서 새로운 데이터를 볼 수 있다. |
결과 집합에 대해 다음과 같이 2가지 Concurrency 타입을 지정할 수 있다.
타입 | 설명 |
---|---|
Read-only | 데이터를 수정할 수 없다. 따라서 여러 트랜잭션 때문에 발생할 수 있는 잠금(Lock) 현상은 없다. |
Updatable | 데이터를 수정할 수 있다. 단, 서로 다른 사용자가 같은 데이터에 접근할 경우 잠금 현상때문에 동시 수행을 할 수 없다. |
tbJDBC에서 지원하는 주요한 인터페이스 메소드는 다음과 같다.
java.sql.ParameterMetaData
java.sql.Savepoints
tbJDBC에서 지원하는 javax.sql 패키지의 인터페이스 메소드는 다음과 같다.
javax.sql.ConnectionEventListener
javax.sql.ConnectionPoolDataSource
javax.sql.DataSource
javax.sql.PooledConnection
javax.sql.RowSet
javax.sql.RowSetInternal
javax.sql.RowSetListener
javax.sql.RowSetMetaData
javax.sql.RowSetReader
javax.sql.RowSetWriter
javax.sql.XAConnection
javax.sql.XADataSource
tbJDBC는 JDBC 3.0 표준의 일부를 제외한 모든 기능을 지원한다.
다음은 JDBC 3.0 표준 지원하는 주요 기능에 대한 설명이다.
Savepoint 인터페이스를 구현하여 임의의 트랜잭션에 대한 저장점 설정과 커밋 및 롤백 기능을 제공한다. 단, 특정한 저장점을 해제하는 Connection.releaseSavepoint java.sql 메소드는 제공하지 않는다.
접속 풀링과 관련된 문장의 풀링을 제공한다.
ConnectionPoolDataSource 인터페이스에서 설정할 수 있는 내용을 지원한다. 사용자는 DataSource 객체에 의해 PooledConnection이 어떠한 특성을 갖고 생성될지를 결정할 수 있다.
ParameterMetaData 인터페이스를 구현한 JDBC 클래스는 준비된 문장(Prepared Statement)에서 사용한 파라미터 개수의 정보를 제공한다. 단, 데이터 타입과 속성(Property)에 대한 메타데이터(metadata)는 제공하지 않는다.
SQL 문장을 실행한 후 결과 집합으로부터 getGeneratedKeys
함수를 사용하여 결과 로우에 대한 키 또는 자동으로 생성된 컬럼의 값을 얻는다.
CallableStatement 객체의 파라미터를 저장할 때 파라미터 이름으로 구별할 수 있는 이름 있는 파라미터(named parameter) 기능을 지원한다.
결과 집합이 열려있는 동안에 커밋이 발생했을 때 결과 집합을 그대로 유지할지 아니면 닫을지를 설정한다. tbJDBC에서는 결과집합을 유지하는 방법만을 지원한다.
한 SQL 문장이 여러 개의 결과 집합을 열 수 있도록 지원한다.
updateXXX API를 통해 BLOB와 CLOB 객체에 포함된 데이터를 수정하는 기능을 제공한다.
tbJDBC에서 지원하지 않는 기능은 다음과 같다.
BOOLEAN, DATALINK, URL 데이터 타입
REF 객체의 수정
그룹 변환 및 데이터 타입의 매핑
tbJDBC에서 지원하는 주요한 인터페이스 메소드는 다음과 같다.
java.sql.NClob
java.sql.RowId
java.sql.SQLXML
java.sql.Wrapper
tbJDBC에서 지원하는 javax.sql 패키지의 인터페이스 메소드는 다음과 같다.
javax.sql.StatementEventListener
다음은 JDBC 4.0 표준 지원하는 주요 기능에 대한 설명이다.
SQLXML 인터페이스를 통해 SQL:2003에 추가된 XML 데이터 타입을 사용할 수 있다.
자동으로 드라이버를 로딩할 수 있게 되어 Class.forName를 사용한 java.sql.Driver 클래스의 로드 없이도 드라이버 객체를 사용할 수 있다.
데이터베이스에서 별도로 지정해 사용하는 국가별 캐릭터 셋을 지원하기 위한 API가 추가되었다.
연쇄적으로 연결된 예외를 생성할 수 있게 되어 보다 자세한 원인을 전달해 줄 수 있으며, 새로운 종류의 예외 타입이 추가되었다.
Blob/Clob 객체를 생성/해제할 수 있는 API를 지원한다.
RowId 인터페이스를 이용하여 SQL ROWID 타입을 사용할 수 있다.
Wrapper 인터페이스를 이용하여 애플리케이션 서버나 접속 풀링 환경에서도 실제 JDBC 객체에 접근해 사용할 수 있다.
접속 풀링 환경에서 실제 접속이 닫히거나 유효하지 않게 되었을 때 그 상태를 풀링된 문장에 통지해 준다.
tbJDBC에서 지원하지 않는 기능은 다음과 같다.
사용자 정의 타입 조회 및 계층 구조 검색