JDBC의 주요 인터페이스 정리
Connection
- 특정 DB와의 연결의 추상화
- SQL
statements
(구문) 실행과ResultSet
(실행 결과)의 반환은Connection
의 맥락 아래서 아루어짐
Connection 인터페이스의 기본 메서드
메서드 선언 | Desc |
Statement createStatement() | Returns: a new default Statement object
여러번 호출할 경우(사실 대부분의 경우) PreparedStatement를 사용하는 것이 나음 |
PreparedStatement prepareStatement(String sql) | Creates a PreparedStatement object for sending parameterized SQL statements to the database. |
CallableStatement prepareCall(String sql) | Creates a CallableStatement object for calling database stored procedures. |
String nativeSQL(String sql) | statement의 native form을 반환 |
void setAutoCommit(boolean autoCommit)
boolean getAutoCommit() | 오토 커밋 플래그의 set, get |
void commit() | 이전 커밋 혹은 롤백 이후의 모든 변경을 반영
가지고 있던 db lock을 release |
void rollback() | 현재 트랙잭션의 모든 변경을 취소
가지고 있던 db lock을 release |
void close() | Connection객체의 db와 jdbc 자원의 release |
- 위의 모든 기본 메서드는 SQLException을 throws 함
- SQLException은 체크드 예외로써 try-catch문을 통해 잡거나 명시적으로 던져야함
Statement
- 정적인 SQL 구문의 실행과 실행결과의 반환에 사용되는 객체의 추상화
statement 인터페이스의 기본 메서드
메서드 선언 | Desc |
ResultSet executeQuery(String sql) | seletec SQL 구문을 실행, ResultSet 객체 반환
Note - PreparedStatement나 CallableStatement에서 활용 불가능
|
int executeUpdate(String sql) | Insert, Update, Delete SQL 구문을 실행 |
void close | Statement 객체 반환, jdbc 리소스 반환 |
statement에서 쿼리를 날리는 시점에 sql을 전달하는 첫번째 메서드는 preparedstatement나 callablestatement의 구현에서는 막아놓는다.

PreparedStatement
- 생성시 sql 구문을 전달, ‘?’를 통한 파라미터 바인딩 기능 제공
- 다양한 필드 타입을 바인딩 할 수 있는 setXXX 메서드 제공
- 생성되는 Key를 담은 ResultSet을 반환하는
getGeneratedKeys
메서드 제공
CallableStatement
- SQL stored procedures 실행을 위한 인터페이스
- 필요하면 찾아서 학습해보자
ResultSet
- 데이터 베이스 쿼리 실행 결과 테이블의 추상화
- data row를 포인팅하는 cursor를 가짐
next( )
- 다음 row로 이동, 이동에 성공한 경우 true
- 다음 row가 없는 경우 false
- 기본적으로 ResultSet은
TYPE_FORWARD_ONLY
임 TYPE_SCROLL_INSENSITIVE
,TYPE_SCROLL_SENSITIVE
을 생성자에 넣어 스크롤 기능 제공가능
- 기본적으로 ResultSet은
CONCUR_READ_ONLY
임 CONCUR_UPDATABLE
을 설정할 수 있음
- 위
Properties
들은 그냥 깡 int로 구현되어 있음
- cursor가 가르키는 row의 data를 읽는 getType 메서드 제공
- 이때 columnIdx 혹은 columnLable을 전달함