Springboot

Data Source 이해

25G 2023. 8. 16. 19:14

커넥션을 얻는 방법은 JDBC 드라이버 매니저를 통해 획득하던지 커넥션 풀로 접근하는 두가지 방법이 있다.

드라이버 메니저를 통해 커넥션을 획득하다가 커넥션 풀로 변경시 문제

전반적인 코드 변경이 일어난다.

위 문제를 해결하기위해서 추상화를 해놨는데
DaraSource를 통해 커넥션을 획득하는 방법을 추상화 해놓은 인터페이스가 있다.

  • 대부분의 커넥션 풀은 DataSoure 인터페이스를 이미 구현해 두었다.
  • 스프링은 DriverManagerDataSorce 라는 DataSoure의 구현체가 있다. 그렇기때문에 DriverManagerDataSorce맞춰서 커넥션 풀을 사용할 수 있음

driverManager와 DataSoure의 차이

driverManager는 커넥션할때마다 url,username,password를 넘겨야 한다.
DataSoure는 최초 커넥션만 할때만 입력해주면된다.

설정과 사용의 분리

  • 최초에 설정을 시작하는시점에만 사용하는 이점은 사용과 분리돼있기때문에 최초의 설정을 한곳에서 관리할수 있다는점이다.

DataSource 커넥션풀

별도의 스레드로 커넥션풀이 설정한숫자만큼 만들어진다.

왜 별도의 쓰레드를 사용할까?!

커넥션에 풀에 커넥션을 체우는것은 상대적으로 오래걸리는 일이다. 애플리케이션을 실행할때 커넥션 풀을 채울때까지 마냥 대기 하면 실행시간이 늦어지기때문.

  • 생성한 풀보다 더 커넥션이 생긴다면?
    • 추가적인 풀은 풀이 확보가 될때까지 블락이 된다.
      • 얼마나 기다릴지에 대해서 설정하고 미리 처리를 해야한다.