-
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를 얻는 방법
- JNDI(Java Naming and Directory Interface)
커넥션 풀 사용 시 유의 사항
- 커넥션의 사용 주체는 WAS 스레드이므로 커넥션 개수는 WAS 스레드 수와 함께 고려해야 한다.
- DB 접근을 필요로 하는 동시 접속자 수가 너무 많은 경우에는 한정된 커넥션 개수 때문에 커넥션이 반납될 때까지 기다려야 할 수도 있다. 그렇다고 너무 많은 커넥션을 미리 생성해 둘 경우에는 커넥션 또한 객체이기 때문에 메모리를 많이 차지하게 된다. 즉, 커넥션 수를 크게 설정하면 메모리 소모가 큰 대신 동시 접속자 수가 많아지더라도 사용자 대기 시간이 상대적으로 줄어들게 되고, 반대로 커넥션 개수를 작게 설정하면 메모리 소모는 적은 대신 그만큼 대기시간이 길어질 수 있다. 따라서 적정량의 커넥션 객체를 생성해 두어야 한다.
- maximumPoolSize
DataSource
- 커넥션 획득하기 위한 표준 인터페이스
- HikariCP의 DataSource 사용
실습 코드
참고 자료
- https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=ssang8417&logNo=221858327113
- https://d2.naver.com/helloworld/5102792
- https://velog.io/@kkimbj18/JPA-%EA%B8%B0%EB%B3%B8-%EA%B0%9C%EB%85%90%EA%B3%BC-%EC%82%AC%EC%9A%A9-%EC%9D%B4%EC%9C%A0-Feat.-JDBC
- https://steady-coding.tistory.com/564
'교육 자료' 카테고리의 다른 글
MVC 프레임워크 만들기 (0) 2022.08.21 Reflection (0) 2022.08.17 도커 및 도커 컴포즈 소개 (0) 2022.08.05 멀티 스레드 환경에서 동시성 이슈 (0) 2022.07.25 웹 애플리케이션 이해 (0) 2022.07.18