JDBC와 DBCP의 차이점

Kevin·2024년 6월 1일

Database

목록 보기
13/15
post-thumbnail

😊 서론

최근 DB Connection으로 인해 어려움을 겪었었다.

이 때 관한 글

어려움을 겪으면서 Connection에 대해서 공부를 하던 중 JDBCDBCP 2개의 키워드를 알게 되었다.

JDBC에 대한 개념은 이전부터 많이 들었었는데, DBCP란 어떠한 개념인지 그리고 이 둘은 어떠한 차이점을 가지고 있는지를 중점으로 글을 작성 해보고자 한다.


😆 본론

1. JDBC란?

JDBC(Java Database Connectivity)란 자바에서 데이터베이스에 접근할 수 있도록 해주는 API이다.

해당 API에서는 RDBMS에서 데이터를 쿼리하거나 업데이트 하는 방법을 제공한다.

JAVA 프로그램에서는 위 사진에서와 같이 JDBC 드라이버를 통해 데이터베이스에 연결하고 이 드라이버는 데이터베이스에 대한 모든 세부 사항을 처리한다.

이로써 DB에 대한 추상화가 가능하다.


spring-boot-starter-jdbc

→ Spring boot에서 JDBC를 더 쉽게 사용할 수 있게 도와주는 starter이다.

→ 이를 통해 데이터베이스 Connection Pool과 같은 JDBC 관련된 빈들을 자동으로 설정해준다.


JDBC 주요 객체

  • Datasource
    • 데이터베이스에 연결하기 위한 인터페이스이며, 데이터베이스에 연결하기 위한 모든 세부 정보를 캡슐화한다.
  • Connection
    • 애플리케이션과 데이터베이스간의 연결을 나타내는 객체이며, SQL 문을 실행하고 결과를 반환받는 역할
  • Statement
    • SQL문을 데이터베이스에 보내는 역할을 수행하는 객체
  • ResultSet
    • SQL 쿼리의 결과를 나타내는 데이터의 집합

처리 과정



2. DBCP란?

DBCP는 애플리케이션이 시작될 때 미리 여러 개의 데이터베이스 커넥션을 커넥션풀(Connection Pool)에 생성해 놓고 필요할 때마다 사용 후 반환하여 이를 재사용 할 수 있게 해준다.

→ 실제 DB와 커넥션을 맺는 작업은 비용이 큰 작업이다.

이 때 애플리케이션은 Spring을 칭한다.

최초 커넥션 풀 생성시 처리 과정

  1. Spring 애플리케이션 시작
  • DBCP(=HikariCP)에서 커넥션 풀이 생성 준비가 된다.

Spring boot에서는 DBCP인 HikariCP가 수행되어서 ConnectionPool을 생성한다.

spring-boot-starter-data-jdbc를 통해 데이터베이스와 통신을 한다. 또한 JDBC 내장으로 DBCP(=HikariCP)를 포함하고 있다.


2. Connection Pool을 생성한다.


3. Connection 생성 → JDBC 연결 → 데이터베이스
  • JDBC를 이용하여서 데이터베이스에 연결한다. 연결이 성공하면, 해당 Connection 객체는 Connection Pool에 추가된다.
  • WAS가 데이터베이스 접속을 관리하므로 연결 풀링 같은 고급 기능을 이용할 수 있어 성능 향상에도 도움이 된다.
  • 연결 풀링

  1. Connection Pool 구성 완료

DBCP에서는 JDBC를 사용하여 데이터베이스와 연결하고, 연결을 관리한다.

JDBC만 사용할 경우에는 DB 접속 시에 JDBC 드라이버 로드, DB 커넥션 획득 등의 과정을 거쳐야 하는데 DBCP의 커넥션 풀을 통해 이 과정을 효율적으로 줄일 수 있다.

profile
Hello, World! \n

0개의 댓글