• 티스토리 홈
starryeye
  • 프로필사진
    starryeye
    • 분류 전체보기 (189)
      • C++ (17)
      • Java (24)
      • OOP (5)
      • Spring Reactive Stack (12)
        • Reactive Streams (3)
        • Netty (4)
        • Reactor (1)
        • Webflux (3)
        • DB, Cache 연동 (1)
      • Spring (90)
        • Core (17)
        • MVC (33)
        • Client (2)
        • Security (4)
        • DB, Cache 연동 (33)
      • DataBase (12)
        • RDBMS (2)
        • NoSQL (10)
      • Message Broker (6)
      • Web (4)
      • Network (4)
      • 대규모 시스템 설계 (15)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • JDBC 4
        2022년 07월 11일
        • starryeye
        • 작성자
        • 2022.07.11.오후10:27
        반응형

        DriverManager를 통하여 커넥션을 획득하는 것은.. 리소스 낭비 이다.

         

        DriverManager에 대해 다시 한번 복습해보자..

        DriverManager
        JDBC가 제공한다.
        라이브러리에 등록된 DB 드라이버들을 관리하며, 커넥션을 획득 할 수 있는 기능을 제공한다.
        (드라이버 : DB 종류별로 JDBC의 인터페이스를 구현한 구현체)

         

         

        커넥션을 획득 할 때마다..

        0. DriverManager.getConnection() 호출

        1. DriverManager는 DB 드라이버에게 DB와 TCP/IP로 커넥션을 연결

        2. DB 드라이버는 ID, Password등 부가 정보를 전달한다.

        3. DB는 부가정보로 인증을 하고, DB 세션을 생성한다.

        4. 커넥션 생성 완료

        5. DB 드라이버는 커넥션 객체를 생성하여 반환

        위와 같은 작업을 하는데.. DB와 서버 모두 리소스 낭비가 상당할 거라고 생각 된다.

         

        커넥션 풀

        스레드 풀 개념과 동일하게..

        커넥션을 미리 생성해놓고 사용하는 개념이다.

        애플리케이션 시작 시점에 필요한 만큼 커넥션을 미리 생성해두고 하나씩 꺼내쓰고 반환 하는 방식이다.

        (각 커넥션은 TCP/IP로 연결되어 있는 상태가 유지된다.)

        대표적인 커넥션 풀 오픈소스 : HikariCP (스프링 부트 기본 제공)

         

        자.. 여기서.. 

        커넥션을 얻는 방법은

        커넥션 풀을 사용하는 방식과 (오픈소스 커넥션 풀은 HikariCP 말고도 다양하다..)

        직전 포스팅에서 사용한 DriverManager를 직접 사용하는 방식이 존재한다.

        -> 개발자 입장에서..

        -> DriverManager를 사용하다가.. 커넥션 풀 방식으로 바꾸거나

        -> 다른 오픈소스를 사용하는 상황이 생길 수 있다.

         

        그러면 또..

        구현체에 의존하는 현상이 생기며... 방식을 바꿀때마다.. 코드를 많이 변경 해야한다...

        이를 해결 하기 위해..

        DataSource라는 인터페이스가 생겼다.

         

        DataSource

        애플리케이션 로직은 앞으로 DataSource 인터페이스를 의존하도록 하자..

        기존의 DriverManager는 DriverManagerDataSource라는 구현체로 구현해두었다.

        HikariCP는 DataSource를 implements하여 HikariDataSource라는 구현체를 만들었다.

        ...

        DataSource 인터페이스 구현체

        DriverManagerDataSource (기존 DriverManager를 대체할 수 있다.)

        HikariDataSource

        등

         

        따라서..

        보통 DataSource를 사용하는 곳은 repository이다..

        repository의 생성자에 원하는 datasource 구현체를 의존주입 하는 방식으로..

        사용부가 아닌.. 설정부로 분리하여 컨트롤한다.

        (DI, OCP)

        반응형

        'Spring > DB, Cache 연동' 카테고리의 다른 글

        JDBC 6  (0) 2022.07.13
        JDBC 5  (0) 2022.07.13
        JDBC 3  (0) 2022.07.11
        JDBC 2  (0) 2022.07.11
        JDBC 1  (0) 2022.07.11
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바

        개인정보

        • 티스토리 홈
        • 포럼
        • 로그인

        단축키

        내 블로그

        내 블로그 - 관리자 홈 전환
        Q
        Q
        새 글 쓰기
        W
        W

        블로그 게시글

        글 수정 (권한 있는 경우)
        E
        E
        댓글 영역으로 이동
        C
        C

        모든 영역

        이 페이지의 URL 복사
        S
        S
        맨 위로 이동
        T
        T
        티스토리 홈 이동
        H
        H
        단축키 안내
        Shift + /
        ⇧ + /

        * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.