2014년 8월 3일 일요일

Java JDBC API 정리하기

JDBC 에 대하여 정리해볼 필요가 있어서 정리하면서 기록을 남긴다.
JDBC 는 2개의 패키지로 구분된다.


  • java.sql
  • javax.sql


간단한 JDBC버전 정보

  • 1.8 - JDBC 4.2
  • 1.7 - JDBC 4.1
  • 1.6 - JDBC 4.0
  • 1.4 - JDBC 3.0
  • 1.2 - JDBC 2.0


Java.sql 를 살펴보도록 한다.

1. DriverManager 관련

  • DriverManager class - Driver 를 이용하여 Connection 을 만든다.
  • SQLPermission class
  • Driver interface
  • DriverPropertyInfo class - JDBC driver 의 속성 정보 제공
    각 벤더는 Driver 에 대한 구현을 수행하고 제공하여야 한다.  


2. SQL statement 관련

  • Statement interface
  • PreparedStatement interface
  • CallableStatement Interface
  • Connection interface 
  • Savepoint interface
    interface 만 제공하므로 각 벤더에서는 해당 Interface 를 기준으로 구현을 해야한다.

3. Result 관련
  • ResultSet interface
    각 벤더는 ResultSet 에 대한 구현을 수행하고 제공하여야 한다.

4. SQL type 매핑 관련

  • Array interface -- mapping for SQL ARRAY
  • Blob interface -- mapping for SQL BLOB
  • Clob interface -- mapping for SQL CLOB
  • Date class -- mapping for SQL DATE
  • NClob interface -- mapping for SQL NCLOB
  • Ref interface -- mapping for SQL REF
  • RowId interface -- mapping for SQL ROWID
  • Struct interface -- mapping for SQL STRUCT
  • SQLXML interface -- mapping for SQL XML
  • Time class -- mapping for SQL TIME
  • Timestamp class -- mapping for SQL TIMESTAMP
  • Types class -- provides constants for SQL types

5. 사용자 정의 타입 매핑 관련
  • SQLData interface -- specifies the mapping of a UDT to an instance of this class
  • SQLInput interface -- provides methods for reading UDT attributes from a stream
  • SQLOutput interface -- provides methods for writing UDT attributes back to a stream

6. Metadata

  • DatabaseMetaData interface -- provides information about the database
  • ResultSetMetaData interface -- provides information about the columns of a ResultSet object
  • ParameterMetaData interface -- provides information about the parameters to PreparedStatement commands
7. Exception
  • SQLException -- thrown by most methods when there is a problem accessing data and by some methods for other reasons
  • SQLWarning -- thrown to indicate a warning
  • DataTruncation -- thrown to indicate that data may have been truncated
  • BatchUpdateException -- thrown to indicate that not all commands in a batch update executed successfully

Javax.sql 을 살펴보자

1. DataSource interface 를 통해 Connection 을 생성하여 다음과 같은 이점이 있다.
  • Properties 를 이용하여 어플리케이션의 소스코드 수정없이 속성을 변경할 수 있다.
  • Connection Pooling, Statement Pooling, 분산 트랜잭션 등을 처리할 수 있다.

2. Connection pooling 과 Statement pooling
  • ConnectionPoolDataSource Interface
  • PooledConnection Interface
  • ConnectionEvent Class
  • ConnectionEventListener Interface
  • StatementEvent Class
  • StatementEventListener Interface

3. Distributed transactions
  • XADataSource
  • XAConnection

4. Rowsets - 이건 좀더 정리가 필요
  • Event Notification
    • RowSetListener
    • RewSetEvent
  • Metadata
    • RowSetMetaData
  • The Reader/Write Facility
    • RowSetInternal
    • RowSetReader
    • RowSetWriter

기본적인 JDBC 를 살펴보았으니 차후 Oracle JDBC Driver 를 살펴보면서 다시 정리해 봐야겠다.