[ DB 커넥션 풀 : DBCP ]
JDBC와 DBCP의 관계를 관공서 볼펜을 예시로 들면
JDBC는 관공서에서 창구원들이 직접 볼펜을 주고 받는 경우
DBCP는 책상위에 달린 볼펜
볼펜을 직접 주고 받을 경우는 창구원의 번거로움과 이용자가 가져갈수 있다는 불편사항이 있는데
책상위에 달린 볼펜은 사용자가 쓸일이 있는걸 알고 만든것이기 때문에 그럴 일이 없다!
DB의 연결성능 향상
- 커넥션
: 앱(프로그램)과 DB의 연결 : Connection conn = DriverManager
-> DB에 접속하고 종료하는 일련의 동작과정
다수의 연결, 정확하지 않은 연결, 종료되지 않는 연결 -> 시스템부하
-> 최대연결커넥션 초과로 DB접속이 아예 불가능 -> 비용손실
=> 필요한 정보를 클라이언트의 DB에 일부 저장해서 서버의 부하를 낮춤
=> 데이터일치를 위한 알고리즘, 보안이 필요!
- 트랜잭션
: 여러작업을 하나의 작업처럼 단위화
작업단위
[ DBCP ]
일정한 개수의 커넥션을 미리 확보(ConnectionPool)하고, 클라이언트가 요청시에 이미 확보한 커넥션을 앱에 제공하는 서비스
기존 : 클라이언트 -> 웹 -> JDBC -> DB
DBCP : 클라이언트 -> 웹 -> JNDI -> 커넥션풀 -> DB
이용순서
1) 웹 에플리케이션 서버(톰캣)이 시작 -> 커넥션미리 생성
2) 생성된 커넥션 객체를 요청이 들어왔을때 JNDI를 이용해 전달
JNDI (Java Naming and Directory Interface)
: 어떤 과정이나 절차, 알고리즘 등을 캡슐화하여 처리
네이밍서비스 : 가장의 이름을 자바객체, 서비스파일, 서버 등으로 연결해줌
3) 사용하지 않는 커넥션 종료, 최소한의 커넥션을 유지
커넥션풀
과거에는 서버 종속적이여서 서버별로 다르고, 개발자가 직접 클래스를 구현해야 했음 ==> 호환성문제와 유지보수, 성능보장에 문제가 생김!
현재는 서버(톰캣)에 DBCP가 내장되어 있어서 문제해결
DBCP : JDBC에서 제공하는 DataSource 인터페이스를 활용
JNDI를 통해 DataSource인터페이스를 제공받을 수 있음
설정방법
1. 톰캣서버에 DataSource를 등록
server.xml or context.xml
(.xml == 설정)
(server.xml은 잘못 건들이면 프로그램 자체가 위험하기 때문에 context.xml으로 설정)
: DBCP 자원등록설정
2. JNDI 연결할때 필요한 각종 설정 추가
웹 어플리케이션에서 참조하는 각종 서버 리소스에 대한 설정을 변경해야함
web.xml
<resource-ref>
<res-auth>Container</res-auth> <!--이런 자격을 가진-->
<res-type>javax.sql.DataSource</res-type> <!--이런 타입을 가진-->
<res-ref-name>jdbc/orcl</res-ref-name> <!--이 DB를 가져오겠다-->
</resource-ref>'JAVA' 카테고리의 다른 글
| 리스너, 초기화 매개변수, 필터 (0) | 2021.09.10 |
|---|---|
| 서블릿, JSP, DB연동 (0) | 2021.09.10 |
| JSP 포워딩 vs 리다이렉팅 (0) | 2021.08.25 |
| JSP 내장객체 exception (0) | 2021.08.25 |
| JSP 내장객체 (0) | 2021.08.25 |