커넥션 풀 진행과정
526
작성한 질문수 74
@Test
void dataSourceConnectionPool() throws SQLException, InterruptedException {
//커넥션 풀림
HikariDataSource dataSource = new HikariDataSource();
dataSource.setJdbcUrl(URL);
dataSource.setUsername(USERNAME);
dataSource.setPassword(PASSWORD);
dataSource.setMaximumPoolSize(10);
dataSource.setPoolName("MyPool");
useDataSource(dataSource);
Thread.sleep(1000);
}
private void useDataSource(DataSource dataSource) throws SQLException{
Connection con1 = dataSource.getConnection();
Connection con2 = dataSource.getConnection();
log.info("connection={}, class={}",con1,con1.getClass());
log.info("connection={}, class={}",con2,con2.getClass());
}
}
DriverManager.getConnection을 하면 라이브러리에서 해당 커넥션을 처리할 수 있는 DB 드라이버를 찾는 시간이 걸리고 또 커넥션을 반환하는 시간까지 걸렸습니다.
애플리캐이션로직 => jdbc인터페이스 => DB드라이버 => 해당 DB
그러면 코드의 HikariCP 커넥션 풀에서 dataSource.getConnection()을 하면 커넥션 풀을 통해 이미 생성되어 있는 커넥션을 객체 참조로 쓰니까 커넥션풀에서 DB드라이버를 조회합니다.
어플리케이션 로직 ⇒ 데이터소스 ⇒ 커넥션 풀 ⇒ JDBC 인터페이스 =>DB드라이버 => 해당 DB
이런 식으로 진행되어서 커넥션 풀에서 커넥션(이미 DB와 연결된)을 조회,반환하는 시간이 걸린다고 이해했는데 맞게 이해했는 지 궁금합니다.
답변주시면 정말 감사하겠습니다.
답변 2
0
안녕하세요, 인프런 AI 인턴이에요.
작성하신 코드에 대한 질문이신것 같은데, 맞나요?
커넥션 풀은 미리 정해진 개수만큼의 커넥션을 생성해놓고, 애플리케이션이 필요할 때마다 커넥션을 가져와 사용하는 것입니다.
커넥션 풀에서 커넥션을 가져올 때는 이미 생성되어 있는 커넥션 객체를 참조하여 사용하기 때문에, DriverManager.getConnection() 메소드를 호출하여 DB 드라이버를 등록하고 커넥션을 가져오는 것보다 더 빠릅니다.
즉, 커넥션 풀을 사용하면 미리 생성되어있는 커넥션을 가져와 사용하기 때문에, DB 드라이버를 찾는 시간 등이 단축되어 더 효율적인 처리가 가능합니다.
그리고 작성하신 코드에서는 HikariCP 라이브러리를 사용한 커넥션 풀을 구현하고, useDataSource() 메소드에서 dataSource.getConnection()으로 커넥션을 가져오고 있습니다.
이해하신 내용이 맞으신지 확인 부탁드립니다. 감사합니다.
spring initialiser 어떤걸 선택해야될지 모르겠어요
0
42
2
트랜잭션 템플릿이 체크예외는 커밋하는 이유가 궁금합니다.
0
54
1
jdbc 학습하다 궁금해서 질문드려요
0
87
1
정상이체와 이체중 예외발생 차이
0
73
2
이번 강의부터가 JDBC 직접 사용 맞나요?
0
91
1
순수한 서비스 계층에 대한 의문???
0
84
2
3_4test, 4test 자동 리소스 안됨
0
61
2
데이터베이스 선택 관련 질문.
0
73
2
after 메서드 사용 유무
0
62
2
데이터베이스 접근 및 DB 락
0
59
1
@SpingBootTest, @TestConfiguration
0
59
1
Read Committed 격리 수준 사용 관련 질문
0
53
1
AopCheck Test 부분의 EnhancerBySpring 확인 법??
0
70
2
커리큘럼 관련 질문
0
79
1
서비서 계층 스프링 프레임워크 사용
0
90
1
validation(toMember)의 위치
0
84
2
데이터 계층에서 서비스 로직의 datasource를 인식하는 방법
0
167
2
member 상수 질문
0
125
2
ctrl + F6 이후로 con 인식이 안 됩니다
0
157
2
DrivenManager 와 Connection 반환에 대한 질문입니다!
0
112
1
섹션5 트랜잭션 템플릿관련 질문(이기종 DB)
0
117
1
세션1 테이블 조회결과 그림은 Redo 로그에 속하나요?
0
104
1
트랜잭션이 필요하지 않은 경우 DB 대신 파일 시스템을 사용하는 것이 더 효율적인가?
0
99
1
강의 14분쯤 Exception 질문
0
117
2





