JDBC

devkwon·2023년 9월 15일

BackEnd

목록 보기
1/7

JDBC(Java Database Connectivity)는 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API이다. JDBC는 데이터베이스에서 자료를 쿼리하거나 업데이트하는 방법을 제공한다.

많은 DBMS들이 많은데 번거롭게 JDBC를 왜 사용할까?

  • 만약 MYSQL을 사용하고 있었는데 회사에서 오라클을 도입하려고 한다. 이를 모두 바꾸는건
    자원과 시간이 매우 많이 드는 일이다. 하지만 JDBC를 사용하면 DBMS와는 무관하게 동일한 API를 통해 데이터베이스를 관리할 수 있다. 즉 DBMS 종류에 독립적인 자바 프로그래밍이 가능해진다.

JDBC는 3가지 순서로 이루어진다.
1. 데이터베이스 연결을 설정한다.
2. SQL문을 DBMS에 전송한다.
3. SQL문을 전송하고 결과가 처리될 수 있게한다.

JDBC Interface

  • Driver: 드라이버(DBMS)에 대한 정보를 가지고 있다.

  • Connection: 데이터베이스에 대한 하나의 세션을 표현한다.

  • DriverManager 클래스의 getConnection으로 가져올 수 있다.

  • Statement: SQL문을 실행하고 그에 대한 결과값을 가져올 때 사용한다.

Statement에는 3가지 종류가 존재하는데.
Statement, PreparedStatement, CallableStatement가 있다.

Statement는 기본 객체이고 text로 sql문을 실행한다.

PreparedStatement는 동일한 SQL문이 반복될 때 사용한다.
대용량의 문자나 바이너리 데이터를 저장할 때 사용될 수도 있다.
SQL문장이 미리 컴파일 되어 저장되는데 ?로 되어 있는 부분에 Parameter를 대입하여 사용한다.

CallableStatement는 DB에 의해 SQL문을 실행하는 것이 아니라 Stored Procedures를 실행한다. 해당 프로시저는 연속된 SQL문을 DB에 저장해놓고 함수처럼 호출해서 실행한다. 이를 통해
속도가 훨씬 빠르고 SQL문을 더 이상 자바에서 작성하지 않게 되어 SQL 코드와 자바 코드가 독립적이게 된다.

public boolean execute(String sql ) throws SQLException // SQL문을 구별하지 않고 다양한 쿼리문을 수행할 수 있다.
결과가 ResultSet으로 나오면 true고 아니면 DML이나 false가 온다.

public ResultSet executeQuery(String sql) throws SQLException 
// select를 처리할 때 사용한다. 성공 시 ResultSet이 리턴된다.

public int executeUpdate(String sql)throws SQLException 
//주로 DML(delete, update, insert)등의 SQL을 수행할 때 사용한다. 성공 시 int가 리턴된다.
  • ResultSet : 쿼리에 대한 결과값을 처리할 때 사용된다.
    ResultSet 객체의 커서는 결과값의 첫번째 레코드의 바로 이전을 가리킨다.
next() // 객체 커서를 한 칸 움직인다.

getString(index or name) // 해당 인덱스나 이름의 데이터를 String으로 받아온다.

JDBC를 사용하기 위해선 DTO, DAO가 필요하다.

DTO

DAO

0개의 댓글