1. 커넥션풀 Connection Pool
커넥션풀(DBCP) 개요
JDBC를 통하여 DB에 연결하기 위해서는 드라이버(Driver)를 로드하고 커넥션(connection) 객체를 받아와야 한다.
JDBC를 사용하면 사용자가 요청을 할 때마다 매번 드라이버를 로드하고 커넥션 객체를 생성하여 연결하고 종료하기 때문에 매우 비효율적이다. 이런 문제를 해결하기 위해서 커넥션풀(DBCP)를 사용한다.
웹페이지에 접속자의 수가 많게 되면 커넥션을 그 만큼 걸어주어야 하기 때문에 서버 과부하 발생한다.
(서버가 다운되는 현상까지 발생)
웹 컨테이너가 실행되면서 커넥션(connection) 객체를 미리 풀(pool)에 생성해 둔다.
DB와 연결된 커넥션(connection)을 미리 생성해서 풀(pool) 속에 저장해 두고 있다가 필요할 때에 가져다 쓰고 반환한다.
미리 생성해두기 때문에 데이터베이스에 부하를 줄이고 유동적으로 연결을 관리 할 수 있다.
JDBC: Java Data Base Connectivity
자바 데이터베이스 연결. 정의는 DataBase와 연결하기 위한 Java Interface이다.
DBCP: DataBase Connection Pool
DataBase와 Connection을 맺고 있는 객체를 관리하기 위한 Connection Pool
*DBCP는 Java 기반의 웹서비스에서 많이 사용하고 있는 프레임워크들이다. 커넥션 생성은 DBCP에서 이루어짐.
DBCP를 위한 파일:
1) mysql 버전
Commons-collections4-4.1-bin.jar
Commons-dbcp2-2.1.1-bin.jar
Commons-pool2-2.4.2-bin.jar
+ db연동 파일(connector)
2) oracle 버전
tomcat-dbcp.jar
+ db연동 파일(ojdbc6)
DBCP 사용을 위한 단계:
1) WebContent>WEB-INF>lib 폴더에 파일을 붙여 넣는다.
2) dynamic web project에 test를 위한 jsp 파일을 먼저 실행한다 (server.xml에 Context 나타내기 위함)
3) jsp를 한 번 실행시키면 Servers>server.xml에 해당 프로젝트에 맞는 Context 태그가 생성된다.
4) Context 태그 안에 Resource태그를 삽입한다.
- mysql버전
<Resource name="jdbc/db명" auth="Container" type="javax.sql.DataSource" maxTotal="100" maxIdle="30" maxWaitMillis="10000" username="사용자명" password="비밀번호" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/db명"/>
- oracle버전
<Resource name="jdbc/db명" auth="Container" type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver" url="jdbc:oracle:thin:@127.0.0.1:1521: db명" username="사용자명" password="비밀번호" maxTotal="20" maxIdle="10" maxWaitMillis="-1"/>
maxTotal: 100명 기다릴 수 있음
maxIdle: 연결은 30명
maxWaitMillis 시간이후에 나가기
5)web.xml 파일에 resource-ref 태그 내용 추가하기
- mysql버전
- oracle버전
6) DBCP 사용하기
여러가지 조합이 있지만, 선생님께서 여러번 테스트를 걸쳐 오류나지 않고 최대 버전을 지원하는 조합을 알려 주셨다. tomcat에서 여러가지 조합을 테스트를 해보아도 좋을 것 같다.
선생님께서 알려주신 조합으로 DBCP 연동을 실습해 보았다.
2. 게시판 DAO
오늘은 게시판 DTO, DAO, DBCP버전을 만들었다.
아직 화면구현까지는 하지 못했으나, DTO, DAO 메소드 모두 test 완료하였다.
내일 화면 구현만 해주면 완성될 것으로 보인다!!
'배운 내용 정리 > WEB' 카테고리의 다른 글
페이지이동, IP확인, UTF-8, queryString (0) | 2020.01.27 |
---|---|
[학습정리] 2020.01.06 - 웹호스팅, 버튼 체크 여부 검사, Response, Select 태그 (0) | 2020.01.27 |
[학습정리] 2020.01.21 - 액션태그(ActionTag), 향상된 for문 (0) | 2020.01.22 |
[학습정리] 2020.01.20 - mvc1 서블릿 ver 게시판 (0) | 2020.01.20 |
[학습정리] 2020.01.13 - Servlet, DBManager (0) | 2020.01.15 |