상세 컨텐츠

본문 제목

스프링 DB - [2] 커넥션풀과 데이터소스 이해

spring/DB

by 덴마크 당나귀 2023. 2. 12. 18:07

본문

728x90

 

  • Driver Manager를 사용하게 되면 DB Connection을 매번 획득해야 한다. 

  • 이렇게 커넥션을 새로 만드는 것은 과정도 복잡하지만 시간도 많이 소요된다.
  • 매번 리소스를 사용해야 됨.
  • 고객이 사용시 SQL을 실행하는 시간 뿐 아니라 커넥션을 새로 만드는 시간이 추가돼서 응답 속도에 영향을 주고 이는, 고객에게 좋지 않은 경험을 줄 수 있음.
  • 해결 방법은 커넥션을 미리 생성해두고 사용하는 '커넥션 풀' 이라는 방법이다.
커넥션 풀

커넥션 풀에 들어 있는 커넥션은 TCP/IP로 DB와 커넥션이 연결되어 있는 상태로 언제든지 즉시 SQL을 DB에 전달가능.

커넥션 풀 사용

커넥션을 새로 맺는 것이 아니라, 이미 맺어진 것을 조회하고 획득하는 형태.
다 쓰고 커넥션을 끊는 것이 아니라 그대로 반환하면 됨.

데이터 소스

커넥션을 획득하는 방법

  • 커넥션을 획득할 때 기존에 DriverManager를 통해서 사용하다 커넥션 풀로 방법을 바꿔서 커넥션을 획득하거나
  • 혹은, 기존 커넥션풀에서 다른 커넥션풀을 사용하려 바꾸려 한다면 모두 
  • 애플리케이션 로직 코드를 바꿔야 한다.

위 와 같은 상황을 방지하기 위해서는 어떻게 해야될까?

커넥션 획득 방법을 추상화 [Data Source]

  • DataSource는 커넥션을 획득하는 방법을 추상화하는 인터페이스이다.
  • 이 인터페이스의 핵심 기능은 커넥션 조회 하나이다.
  • 대부분의 커넥션 풀은 Data Source 인터페이스를 이미 구현해두었다. 
  • 따라서 개발자는 HikariCP, DBCP2 커넥션 풀들에 대한 의존을 하는 것이 아니라, DataSource 인터페이스에만 의존하도록 로직 작성하면 된다.
728x90

'spring > DB' 카테고리의 다른 글

스프링 DB - [3] 트랜잭션 이해  (0) 2023.02.12
스프링 DB - [1] JDBC의 이해  (0) 2023.02.12

관련글 더보기