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 를 살펴보면서 다시 정리해 봐야겠다.