ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JDBC 프로그래밍
    교육 자료 2022. 8. 11. 00:47
    JDBC 프로그래밍 01 JDBC 개념 소개
      02 DB 커넥션 풀 개념 소개
      03 JDBC 프로그래밍 실습
      04 실습한 JDCB 코드 리팩토링 및 DB 커넥션 풀 적용

     

    JDBC 개념 소개


    JDBC(Java Database Connectivity)

    • 자바 애플리케이션에서 DB 프로그래밍을 할 수 있도록 도와주는 표준 인터페이스 (DBMS 종류에 상관없음)
    • JDBC 인터페이스들을 구현한 구현체들은 각 데이터베이스 벤더 사들이 제공해 준다. 이를 JDBC 드라이버라 한다.
    • 자바 코드에서는 JDBC 인터페이스에만 의존하기 때문에 DB를 변경하더라도 코드를 변경할 필요가 없다.

     

    DB 커넥션 풀 개념 소개


    DBCP (Database Connection Pool)

    • 미리 일정량의 DB 커넥션을 생성해서 풀에 저장해 두고 있다가 HTTP 요청에 따라 필요할 때 풀에서 커넥션을 가져다 사용하는 기법
    • 참고로 스프링 부트 2.0 부터는 디폴트 커넥션 풀로 HikariCP가 설정 돼 있다.

     

    DBCP 라이브러리 종류

    • HikariCP
    • Apache Commons DBCP
    • Tomcat JDBC
      • JNDI(Java Naming and Directory Interface)
        • 다양한 네이밍 및 디렉토리 서비스에 접근하기 위한 표준 인터페이스 
        • 이를 통해, 네이밍 및 디렉토리 서비스가 제공하는 자원(데이터 및 객체)을 찾을 수 있음 
        • 쉽게 말해 필요한 자원을 key-value 쌍으로 저장한 뒤에 필요할 때 key를 이용해 value를 얻는 방법

     

    커넥션 풀 사용 시 유의 사항

    • 커넥션의 사용 주체는 WAS 스레드이므로 커넥션 개수는 WAS 스레드 수와 함께 고려해야 한다.
    • DB 접근을 필요로 하는 동시 접속자 수가 너무 많은 경우에는 한정된 커넥션 개수 때문에 커넥션이 반납될 때까지 기다려야 할 수도 있다. 그렇다고 너무 많은 커넥션을 미리 생성해 둘 경우에는 커넥션 또한 객체이기 때문에 메모리를 많이 차지하게 된다. 즉, 커넥션 수를 크게 설정하면 메모리 소모가 큰 대신 동시 접속자 수가 많아지더라도 사용자 대기 시간이 상대적으로 줄어들게 되고, 반대로 커넥션 개수를 작게 설정하면 메모리 소모는 적은 대신 그만큼 대기시간이 길어질 수 있다. 따라서 적정량의 커넥션 객체를 생성해 두어야 한다.
    • maximumPoolSize

     

    DataSource

    • 커넥션 획득하기 위한 표준 인터페이스
    • HikariCP의 DataSource 사용

     

    실습 코드

     

     

     

    참고 자료

    '교육 자료' 카테고리의 다른 글

    MVC 프레임워크 만들기  (0) 2022.08.21
    Reflection  (0) 2022.08.17
    도커 및 도커 컴포즈 소개  (0) 2022.08.05
    멀티 스레드 환경에서 동시성 이슈  (0) 2022.07.25
    웹 애플리케이션 이해  (0) 2022.07.18

    댓글

Designed by Tistory.