HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
📝
남득윤 학습 저장소
/
Jdbc-study
Jdbc-study
/
💽
Connection, Statement & ResultSet
💽

Connection, Statement & ResultSet

 
 
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의 구현에서는 막아놓는다.
 
java.sql. Statement-PreparedStatement-CallableStatement
org.h2.jdbc. JdbcStatement-JdbcPreparedStatement-JdbcCallableStatement
java.sql. Statement-PreparedStatement-CallableStatement org.h2.jdbc. JdbcStatement-JdbcPreparedStatement-JdbcCallableStatement
 

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을 전달함
    •