티스토리 뷰
728x90
반응형
1. DBCP
(1) DBCP (Database Connection Pool)
- 미리 여러개 DB 커넥션을 생성하여 하나의 풀에 저장해 두었다가 필요에 따라 풀에서 커넥션을 불러와 사용하는 기법이다.
- 스프링 부트 2.0 부터는 디폴트 커넥션 풀로 HikariCP가 설정되어 있다.
- DBCP 라이브러리 종류로는 HikariCP, 톰캣JDBC 등이 있다.
(2) 커넥션 풀 사용 시 유의 사항
- 커넥션의 사용 주체는 WAS 스레드(HTTP 웹 서버에서 생성했던 스레드)이므로 커넥션의 개수는 WAS 스레드 수와 함께 고려해야 한다.
- 커넥션 수가 커질수록 메모리 소모가 커지지만, 동시 접속자 수가 많을 때에는 사용자 대기 시간이 감소하는 이점이 있다. 반대로 커넥션 수가 감소한다면 비례하여 메모리 소모가 감소하지만 사용자 대기 시간이 증가한다. 따라서 적정량의 커넥션 객체를 생성하는 것이 중요하다.
(3) DataSource
- 커넥션 풀을 자바에서 적용하기 위해서는 DataSource를 사용하는데, 이는 커넥션을 획득하기 위한 표준 인터페이스이다.
- 실습에서는 HikariCP의 DataSource 사용할 것이다.
2. DB 커넥션 풀 실습
이전 시간에 작업한 코드를 리팩토링 하고 DB 커넥션 풀을 적용하려고 한다.
(1) 구현 참고사항
- 먼저 Connection 관련 작업은 모두 ConnectionManager로 이관한다.
- 즉, getConnection 메서드를 ConnectionManager로 이동시킨다. 이때, 기존 내용은 삭제하고 히카리 데이터 소스에서 바로getconnection()을 사용하여 return한다. 또한 기존의 getDataSourc 메서드는 static으로 초기화 해준다.
- DB 커넥션 풀을 적용하려면 미리 일정량의 DB 커넥션을 생성해 풀에 저장하여야 하는데, 실습에서는 HikariCP(커넥션 풀)이 사용된다.
- setMaximumPoolSize(커넥션 수), setMinimumIdle를 추가로 설정해준다. (개인 학습 필요)
- jdbcTemplate를 활용하여 sql 문을 더 깔끔하게 정리해볼 수 있다.
- executeUpdate
- create 메서드를 모두 jdbcTemplate으로 복붙하여 새로운 executeUpdate 함수를 만들어주고, 변경될 수 있는 부분은 외부로부터 받아올 수 있도록 리팩토링 한다.
- 이 때, pstat 의 달라질 수 있는 부분은 인터페이스를 사용하여 setting을 하여 전달함으로써 executeUpdate 메소드 내부에서 setter를 호출하여 변경할 수 있도록 한다.
- 이렇게 리팩토링을 함으로써 기존의 create 메서드에서는 connection에 대한 고민을 하지 않아도 되게 된다.
- executeQuery
- create 메서드와 유사하게 findByUserId를 executeQuery로 리팩토링 해준다.
- findByUserId에서는 추가적으로 결과값을 받아오는 부분도 변경되는 부분으로 수정할 수 있다.
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
#패스트캠퍼스 #포트폴리오 #직장인자기계발 #환급챌린지 #포트폴리오챌린지 #패스트캠퍼스후기 #초격차패키지 #오공완
728x90
반응형
'Study > FastCampus' 카테고리의 다른 글
[Java Project] Part 1. 나만의 MVC 프레임워크 만들기 - MVC 프레임워크 (0) | 2023.08.19 |
---|---|
[Java Project] Part 1. 나만의 MVC 프레임워크 만들기 - 프런트 컨트롤러 (0) | 2023.08.18 |
[Java Project] Part 1. 나만의 MVC 프레임워크 만들기 - JDBC 프로그래밍 (0) | 2023.08.16 |
[Java Project] Part 1. 나만의 MVC 프레임워크 만들기 - 서블릿 프로그램 (0) | 2023.08.15 |
[Java Project] Part 1. 나만의 MVC 프레임워크 만들기 - 웹 애플리케이션2 (0) | 2023.08.14 |
댓글