커넥션을 얻는 방법은 JDBC 드라이버 매니저를 통해 획득하던지 커넥션 풀로 접근하는 두가지 방법이 있다.
드라이버 메니저를 통해 커넥션을 획득하다가 커넥션 풀로 변경시 문제
전반적인 코드 변경이 일어난다.
위 문제를 해결하기위해서 추상화를 해놨는데
DaraSource를 통해 커넥션을 획득하는 방법을 추상화 해놓은 인터페이스가 있다.
- 대부분의 커넥션 풀은 DataSoure 인터페이스를 이미 구현해 두었다.
- 스프링은 DriverManagerDataSorce 라는 DataSoure의 구현체가 있다. 그렇기때문에 DriverManagerDataSorce맞춰서 커넥션 풀을 사용할 수 있음
driverManager와 DataSoure의 차이
driverManager는 커넥션할때마다 url,username,password를 넘겨야 한다.
DataSoure는 최초 커넥션만 할때만 입력해주면된다.
설정과 사용의 분리
- 최초에 설정을 시작하는시점에만 사용하는 이점은 사용과 분리돼있기때문에 최초의 설정을 한곳에서 관리할수 있다는점이다.
DataSource 커넥션풀
별도의 스레드로 커넥션풀이 설정한숫자만큼 만들어진다.
왜 별도의 쓰레드를 사용할까?!
커넥션에 풀에 커넥션을 체우는것은 상대적으로 오래걸리는 일이다. 애플리케이션을 실행할때 커넥션 풀을 채울때까지 마냥 대기 하면 실행시간이 늦어지기때문.
- 생성한 풀보다 더 커넥션이 생긴다면?
- 추가적인 풀은 풀이 확보가 될때까지 블락이 된다.
- 얼마나 기다릴지에 대해서 설정하고 미리 처리를 해야한다.
- 추가적인 풀은 풀이 확보가 될때까지 블락이 된다.
'Springboot' 카테고리의 다른 글
Thread starvation or clock leap detected, Dead Lock, hikari 오류 해결 (0) | 2023.08.16 |
---|---|
JPA /save , saveAll 사용시 주의 사항들 (0) | 2023.08.16 |
DB 커넥션풀 (0) | 2023.08.16 |
select시 update쿼리 날라갈때 (0) | 2023.08.16 |
Springboot DataJPA 선택적으로 수정하기 (0) | 2023.08.14 |