> For the complete documentation index, see [llms.txt](https://docs.tibero.com/tibero-manuals/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.tibero.com/tibero-manuals/7.2.6.manuals/jdbc-development-guide/jdbc-standards.md).

# JDBC 표준 지원

tbJDBC가 지원하는 JDBC 표준을 기능별로 설명합니다. 다만, 표준에 따르면 필수적으로 구현해야 하는 부분과 벤더별로 구현여부를 선택 가능한 부분을 구분하여 명시하고 있으며, 이러한 추가 기능에 대해서는 지원하지 않을 수도 있습니다. 본 장에서는 tbJDBC가 지원하는 JDBC 표준을 기능별로 설명합니다.

## JDBC 2.0

인터페이스 메소드

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<br>

tbJDBC에서 지원하지 않는 인터페이스 메소드는 다음과 같습니다.

* java.sql.Ref
* java.sql.SQLData
* java.sql.SQLInput
* java.sql.SQLOutput

### 주요 기능

다음은 JDBC 2.0 표준을 지원하는 주요 기능에 대한 설명입니다.

#### **결과 집합**

tbJDBC에서 지원하는 결과 집합 기능은 다음과 같습니다.

* **Scrolling 기능**

Scrolling 기능을 지원하는 스크롤 가능한 결과 집합(Scrollable ResultSet)을 생성할 수 있습니다. 이 기능은 결과 집합을 정방향 또는 역방향으로 탐색할 수 있습니다. 또한 결과 집합 내에서 상대적이거나 절대적인 위치로 이동할 수 있습니다.

* **결과 집합 타입**

결과 집합은 다음과 같이 3가지 타입으로 지정할 수 있습니다.

<table><thead><tr><th width="176">타입</th><th>설명</th></tr></thead><tbody><tr><td>Forward-only</td><td>최초 생성될 때의 데이터 값으로 고정되며, 오직 정방향으로만 탐색할 수 있음</td></tr><tr><td>Scroll-insensitive</td><td>Forward-only 결과 집합과 마찬가지로 최초 생성될 때의 데이터 값으로 고정되지만, 스크롤 가능한 결과 집합의 특성을 가지므로 정방향, 역방향, 상대 위치, 절대 위치 등으로 탐색할 수 있음</td></tr><tr><td>Scroll-sensitive</td><td><ul><li>데이터베이스 변화에 민감하며, 데이터가 변경되는 경우 즉시 결과 집합에 반영되어 새로운 데이터를 볼 수 있음</li></ul></td></tr></tbody></table>

* **Concurrency 타입**

결과 집합에 대해 다음과 같이 2가지 Concurrency 타입을 지정할 수 있습니다.

<table><thead><tr><th width="178">타입</th><th>설명</th></tr></thead><tbody><tr><td>Read-only</td><td>데이터를 수정할 수 없으므로 여러 트랜잭션 때문에 발생할 수 있는 잠금(Lock) 현상은 없음</td></tr><tr><td>Updatable</td><td><p>데이터를 수정할 수 있음</p><p>(단, 서로 다른 사용자가 같은 데이터에 접근할 경우 잠금 현상 때문에 동시 수행을 할 수 없음)</p></td></tr></tbody></table>

#### **Batch update**

Batch update 기능은 여러 개의 DML 문장을 한꺼번에 처리할 수 있는 기능입니다. 또한 개별로 INSERT 문을 수행하거나 준비된 문장(Prepared Statement)을 사용하여 파라미터만 바꿔가며 수행할 수도 있습니다. 이 때문에 시스템 성능 향상에 많은 도움을 줍니다.

#### **데이터 타입**

tbJDBC는 BLOB(Binary Large Object)과 CLOB(Character Large Object) 데이터 타입을 지원합니다. 사용자는 BLOB과 CLOB 데이터 타입의 데이터를 가져오기 위해 getClob(), getBlob() 메소드를 사용할 수 있으며, 데이터를 저장하기 위해 setClob(), setBlob() 메소드를 추가로 사용할 수 있습니다.

## JDBC 3.0

### 인터페이스 메소드

tbJDBC에서 지원하는 주요 인터페이스 메소드는 다음과 같습니다.

* java.sql.ParameterMetaData
* java.sql.Savepoints<br>

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 표준에서 지원하는 주요 기능에 대한 설명입니다.<br>

* **저장점**\
  Savepoint 인터페이스를 구현하여 임의의 트랜잭션에 대한 저장점 설정과 커밋 및 롤백 기능을 제공합니다. 단, 특정 저장점을 해제하는 Connection.releaseSavepoint 메소드는 제공하지 않습니다.<br>
* **문장 풀링(Pooling)**\
  접속 풀링과 관련된 문장의 풀링을 제공합니다.<br>
* **접속 풀링(Pooling)**\
  ConnectionPoolDataSource 인터페이스에서 설정할 수 있는 내용을 지원합니다. 사용자는 DataSource 객체에 의해 PooledConnection이 어떠한 특성을 갖고 생성될지를 결정할 수 있습니다.<br>
* **파라미터 메타데이터**\
  ParameterMetaData 인터페이스를 구현한 JDBC 클래스는 준비된 문장(Prepared Statement)에서 사용한 파라미터 개수 정보를 제공합니다. 단, 데이터 타입과 속성(Property)에 대한 메타데이터(metadata)는 제공하지 않습니다.<br>
* **자동 생성 키**\
  SQL 문장을 실행한 후 결과 집합으로부터 getGeneratedKeys 함수를 사용하여 결과 로우에 대한 키 또는 자동으로 생성된 컬럼의 값을 얻습니다.<br>
* **이름 있는 파라미터**\
  CallableStatement 객체의 파라미터를 저장할 때 파라미터 이름으로 구별할 수 있는 이름 있는 파라미터(named parameter) 기능을 지원합니다.<br>
* **결과 집합의 유지성**\
  결과 집합이 열려 있는 동안 커밋이 발생했을 때 결과 집합을 그대로 유지할지, 닫을지를 설정합니다. tbJDBC에서는 결과 집합을 유지하는 방법만 지원합니다.<br>
* **여러 개의 결과 집합 반환**\
  한 SQL 문장이 여러 개의 결과 집합을 열 수 있도록 지원합니다.<br>
* **BLOB와 CLOB 객체에 존재하는 데이터의 수정**\
  updateXXX API를 통해 BLOB와 CLOB 객체에 포함된 데이터를 수정하는 기능을 제공합니다.<br>

#### **미지원 기능**

tbJDBC에서 지원하지 않는 기능은 다음과 같습니다.

* BOOLEAN, DATALINK, URL 데이터 타입
* REF 객체의 수정
* 그룹 변환 및 데이터 타입의 매핑

## JDBC 4.0

### 인터페이스 메소드

tbJDBC에서 지원하는 주요 인터페이스 메소드는 다음과 같습니다.

* java.sql.NClob
* java.sql.RowId
* java.sql.SQLXML
* java.sql.Wrapper<br>

tbJDBC에서 지원하는 javax.sql 패키지의 인터페이스 메소드는 다음과 같습니다.

* javax.sql.StatementEventListener

### 주요 기능

#### **지원 기능**

다음은 JDBC 4.0 표준을 지원하는 주요 기능에 대한 설명입니다.<br>

* **XML 데이터 타입**\
  SQLXML 인터페이스를 통해 SQL:2003에 추가된 XML 데이터 타입을 사용할 수 있습니다.<br>
* **자동 드라이버 검출**\
  자동으로 드라이버를 로딩할 수 있어 Class.forName()을 사용해 java.sql.Driver 클래스를 로드하지 않아도 드라이버 객체를 사용할 수 있습니다.<br>
* **국가별 캐릭터 셋 지원**\
  데이터베이스에서 별도로 지정해 사용하는 국가별 캐릭터 셋을 지원하기 위한 API가 추가되었습니다.<br>
* **향상된 SQLException**\
  연쇄적으로 연결된 예외를 생성할 수 있어 더 자세한 원인을 전달할 수 있으며, 새로운 종류의 예외 타입이 추가되었습니다.<br>
* **향상된 Blob/Clob 기능**\
  Blob/Clob 객체를 생성/해제할 수 있는 API를 지원합니다.<br>
* **ClientInfo 설정 기능**\
  setClientInfo/getClientInfo 함수를 사용한 ClientInfo 설정/조회를 지원합니다.<br>
* **SQL ROWID 데이터 타입의 지원**\
  RowId 인터페이스를 이용하여 SQL ROWID 타입을 사용할 수 있습니다.<br>
* **실제 JDBC 객체에 대한 접근 허용**\
  Wrapper 인터페이스를 이용하여 애플리케이션 서버나 접속 풀링 환경에서도 실제 JDBC 객체에 접근해 사용할 수 있습니다.<br>
* **접속 풀링 환경에서 실제 접속 상태에 대한 통지**\
  접속 풀링 환경에서 실제 접속이 닫히거나 유효하지 않게 되었을 때 그 상태를 풀링된 문장에 통지해줍니다.<br>
* **사용자 정의 타입 조회, 사용자 정의 타입을 인자로 하는 PSM 호출**\
  Struct, Array 타입을 생성해서 inbind하거나 서버로부터 select한 후 outbind해서 구조적으로 탐색할 수 있습니다.

## JDBC 4.1

### 인터페이스 메소드

tbJDBC에서 지원하는 주요 인터페이스 메소드는 다음과 같습니다.

* java.sql.Connection
  * void abort(Executor executor)
  * void setSchema(String schema)
  * String getSchema()
  * void setNetworkTimeout(Executor executor, int milliseconds)
* java.sql.Statement
  * void closeOnCompletion()
  * boolean isCloseOnCompletion()
* java.sql.ResultSet
  * \<T> T getObject(int parameterIndex, Class\<T> type)

### 주요 기능

#### **지원 기능**

다음은 JDBC 4.1 표준을 지원하는 주요 기능에 대한 설명입니다.<br>

* **BIGINT**\
  JDBC 타입 BIGINT는 Java의 long 또는 java.lang.Long 타입으로 매핑됩니다.<br>
* **Connection**\
  abort 함수를 사용한 연결 종료를 지원합니다. setSchema 함수를 사용한 schema 지정을 지원합니다. setNetworkTimeout 함수를 사용한 timeout 지정을 지원합니다.<br>
* **Statement**\
  closeOnCompletion 함수를 사용해 결과 집합이 닫힐 때 함께 닫히도록 설정할 수 있습니다.<br>
* **ResultSet**\
  getObject 함수의 인자로 Class를 사용하여 반환 타입을 지정할 수 있습니다.

{% hint style="info" %}
**참고**

JDBC 4.1은 Tibero 7 FS02 릴리즈부터 지원합니다.
{% endhint %}

## JDBC 4.2

### 인터페이스 메소드

tbJDBC에서 지원하는 주요 인터페이스 메소드는 다음과 같습니다.

* java.sql.CallableStatement
  * void registerOutParameter(int parameterIndex, SQLType sqlType)
* java.sql.PreparedStatement
  * void setObject(int parameterIndex, Object x, SQLType targetSqlType)
* java.sql.Statement\
  long executeLargeUpdate()
* java.sql.SQLInput
  * \<T> T readObject(Class\<T> type)
* java.sql.SQLOutput
  * void writeObject(Object x, SQLType sqlType)

### 주요 기능

#### **지원 기능**

다음은 JDBC 4.2 표준을 지원하는 주요 기능에 대한 설명입니다.

* **java.time**\
  LocalDate, LocalTime, LocalDateTime, OffsetTime, OffsetDateTime 타입을 지원합니다.<br>
* **SQLType**\
  setObject, registerOutParameter 함수의 인자로 SQLType을 사용한 타입 지정을 지원합니다.<br>
* **Statement**\
  executeLargeUpdate 함수를 사용해 업데이트 횟수를 long으로 받을 수 있습니다.

{% hint style="info" %}
**참고**

JDBC 4.2는 Tibero 7 FS02 릴리즈부터 지원합니다.
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.tibero.com/tibero-manuals/7.2.6.manuals/jdbc-development-guide/jdbc-standards.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
