본문 바로가기
학습/DB

JDBC란?

코동이 2022. 7. 5.

* JDBC

 

 JDBC는 관계 데이터베이스에 접근하는 자바 API입니다. 클라이언트가 데이터베이스에 접근하는 방법을 정의한 어플리케이션 프로그래밍 API입니다.  자바와 데이터베이스 연결을 위해 사용되는 데이터 접근 기술입니다. JDBC는 데이터베이스와 커넥션을 만들고, SQL 작업을 위한 인터페이스를 제공하고, 결과를 처리합니다, JDBC API는 데이터베이스와 연결하기 위해 JDBC 드라이버를 사용합니다.

 

 

JDBC Driver는 아래 4가지가 있습니다.

 

  1. JDBC-ODBC Bridge Driver
  2. Native API Driver (partially java driver)
  3. Network Protocol Driver (fully java driver)
  4. Thin Driver (fully java driver)

 

특히, 서로 다른 데이터베이스일지라도 일관적인 방법으로 관계 데이터에 접근 가능한  벤더 독립적 API 입니다.

 

 



* JDBC API의 장점


1. 데이터베이스로부터 데이터의 XML 형식을 자동으로 생성합니다
2. 쿼리와 저장된 프로시져를 지원합니다
3. ODBC 드라이버가 설치된 데이터베이스는 접근이 가능합니다

 


* JDBC API의 단점


1. 쿼리 실행 이전과 이후에 많은 코드를 작성합니다.(커넥션, 스테이트먼트, 연결 및 해제)
2. 데이터베이스 로직에 있는 코드를 관리하기 위한 예외를 작성해야 합니다.
3. 여러개의 데이터베이스로부터 코드 반복이라는 시간 낭비를 합니다.

 

 

JDBC API의 문제는 Spring-JDBC-Template로 해결할 수 있습니다. 

JDBC 데이터베이스 접근을 위해 선택할 수 있는 여러가지 옵션이 있습니다.
스프링 프레임워크는 JDBC 데이터베이스 접근을 위해 다음을 사용할 수 있습니다.

 

  • JdbcTemplate
  • NamedParameterJdbcTemplate
  • SimpleJdbcTemplate
  • SimpleJdbcInsert and SimpleJdbcCall

 

 

* JdbcTemplate

 

JdbcTemplate은 JDBC의 사용을 단순화하고 일반적인 오류를 방지하는 데 도움이 되는 JDBC 코어 패지키에 있는 중심 클래스입니다. 내부적으로 JDBC API를 사용하고 JDBC API의 많은 문제들을 제거합니다. SQL 쿼리 또는 업데이트를 실행하여 ResultSets에 대한 반복을 시작하고, JDBC 예외를 처리합니다.

 

core, datasource, object, support의 4가지 패키지로 이루어져 있습니다.

 

핵심 JDBC 흐름을 실행하는데, 어플리케이션 코드로 SQL을 실행하고, 결과를 반환합니다. 예외를 처리하고, 예외 메세지를 제공합니다.

 

 

 

 

* 메서드 종류 및 설명

 

메서드 설명
public int update(String query) 데이터 생성, 업데이트 및 삭제하는 데 사용됩니다.
public int update(String query, Object… args) 주어진 인수를 사용하여 PreparedStatement를 사용하여 레코드를 삽입, 업데이트 및 삭제하는 데 사용됩니다.
public T execute(String sql, PreparedStatementCallback action) PreparedStatementCallback을 사용하여 쿼리를 실행합니다.
public void execute(String query) DDL 쿼리를 실행하는 데 사용됩니다.
public T query(String sql, ResultSetExtractor result) ResultSetExtractor를 사용하여 레코드를 가져오는 데 사용됩니다.

 

 

*  JdbcTemplate을 사용하여 데이터베이스에 저장된 학생 수를 구하기

 

int result = jdbcTemplate.queryForObject(
"SELECT COUNT(*) FROM STUDENT", Integer.class);

 

 

* INSERT 문을 update()를 사용하여 실행하기

 

public int addStudent(int id) {
  return jdbcTemplate.update("INSERT INTO STUDENT VALUES (?, ?, ?)", id, "megan", "India");
}

 

 

위의 코드만 입력하면 JdbcTemplate은 다음과 같은 기능을 처리해줍니다.

- connection 생성 및 제거
- statements 및 프로시져 실행
- ResultSet의 반복 및 결과 리턴

 

 

* 참고

 

https://www.baeldung.com/spring-jdbc-jdbctemplate

반응형

'학습 > DB' 카테고리의 다른 글

트랜잭션 격리 수준  (0) 2022.08.12
고급매핑 - 상속관계  (0) 2022.07.07
HikariCP란?  (0) 2022.07.04
JPA를 이용해 페이징 만들기  (0) 2021.12.15
JPA를 이용해 자동으로 시간, 작성자 추가하기  (1) 2021.12.14