Kim VamPa

[Spring] JDBC란? Connection pool이란? 본문

공부/자바

[Spring] JDBC란? Connection pool이란?

Kim VamPa 2020. 4. 3. 09:03
728x90
반응형

개인 공부 후 자료를 남기기 위한 목적이기에 내용 상에 오류가 있을 수 있습니다.


목표

  • JDBC란 무엇인지 이해하고 작동과정에 대해 공부한다.
  • 커넥션 풀(connection pool)이 무엇인지 공부한다.
  • 스프링 JDBC 란 무엇이고 그에 대한 장점에 대해 공부한다.

목차

1. JDBC

2. Connection Pool

 

1. JDBC

"Java DataBase Connectivity의 약자로서 자바에서 데이터베이스와 관련된 작업을 처리할때 사용하는 API다"
  • DBMS 종류(MySql, MsSql, Oracle...)에 상관 없이 하나의 JDBC API를 사용해서 데이터베이스 작업을 처리할수 있다.
  • JDBC API를 사용하는 어플리케이션의 개략적인 구조는 [그림 1-1]과 같습니다.
    - 자바(웹)어플리케이션 에서 데이터베이스 에 접근하기위해선 JDBC API를 이용해서 데이터베이스에 접근합니다.
    - JDBCAPI는 JDBC 다라이버를 거쳐 데이터베이스와 통신을 합니다.

그림 1-1

  • JDBC 드라이버
    - 자바 프로그램의 요청을 DBMS가 이해할 수 있는 프로토콜로 변환해주는 클라이언트 사이드 어댑터입니다.
    - 각각의 DBMS는 자신에게 알맞은 JDBC드라이버를 제공하고 있습니다.
     

JDBC 실행 과정

  • JDBC 는 다음의 실행 순서를 가집니다.
1. JDBC 드라이버 LOAD

2. Connection 객체 생성

3. Statement 객체 생성

4. Query 실행

5. Result 객체로부터 데이터 추출
(쿼리 실행 결과 사용)

6. Result 객체 Close

7. Statement 객체 Close

8. Connection 객체 Close
  • 해당 과정에서 다음의 객체들을 사용하였습니다
    - Connection : DB 연결 객체
    - Statement 또는 PreparedStatment 객체 : SQL 문 실행 객체
    - ResultSet 객체 : select 문 결과를 가지는 객체
  • 위의 객체들은 DB관련 처리작업이 완료된 다음에는 반드시 사용했던 객체들을 메모리에서 해제(close())를 해주어야 합니다.

2. 커넥션 풀(Connection Pool)

  • 커넥션 풀(Connection Pool)은 일정량의 Connection객체(DB 연결 객체)를 미리 만들어어서 pool에 저장해둡니다.  프로그램에서 요청이 오면 Connection객체를 빌려주고, 해당 객체의 임무가 완료되었으면 다시 반납 받아서 pool에 저장을 하는 프로그래밍 기법입니다.

그림 2-1

  • 장점 : 불필요한 작업(커넥션 생성,삭제)이 사라지므로 성능향상을 기대할 수 있습니다.
    - 보통의 DB접근(JDBC과정)경우 객체를 생성 후 일일이 다시 삭제를 해주어야 합니다.
    - 커넥션 풀을 사용할 경우 커넥션(Connection)객체를 미리 만들어 놓고 사용하기때문에 불필요한 생성과 삭제하는데 드는 비용(메모리 차지)을 줄일수 있습니다.
  • 커넥션(Connection)객체는 적정량만 생성해두어야만합니다.
    - 너무 많은 DB접근이 발생할 경우에는 커넥션(Connection)은 한정되었기 때문에 쓸수 있는 커넥션이 반납될때 까지 기다려야 합니다.
    - 너무 많은 커넥션(Connection)을 생성할시엔 커넥션 또한 객체이므로 많은 메모리를 차지합니다. 그렇게 되면 프로그램의 성능을 저하시키는 원인이 될 수 있습니다.
    - 따라서 사용량에 따라 적정량의 커넥션(Connection)객체를 생성해두어야 합니다.

 

요약

  • JDBC는 자바 어플리케이션이 데이터베이스에 접근할수 있도록 만든 JAVA에서 제공하는 API입니다.
  • 하나의 JDBC로 어떤 DBMS든 각회삭 제공하는 JDBC드라이버를 통해 연결 할 수 있습니다.
  • 커넥션 풀이란 JDBC 실행과정중에서 생성되어야할 Connection 객체를 미리만들어서 pool 이란 곳에서 저장을 해두는 기법입니다.
  • 장점은 불필요한 과정(Connection객체를 생성,삭제)을 줄여서 성능을 향상시킬수 있습니다.

 

Reference

 

 

Date

  • 2020.04.03 작성

 

 

 

 

728x90
반응형
Comments