JAVA/JAVA 정리

[JAVA] Connection Pool로 DB연동하기

Connection Pool
· 커넥션 풀이란 DB와 연결하는 커넥션을 미리 생성해두고 풀에 저장해두었다가 필요할 때
꺼내쓰고, 사용후에는 다시 풀에 반환하는 기법을 말한다.
· 커넥션을 미리 생성해 두기 때문에 커넥션을 사용자가 DB를 사용할 때 마다 매번 생성하는
것보다 더 빠른 속도를 보장한다. 또한 커넥션의 최대 생성 갯수도 제어가 가능하므로 과부하를
방지할 수 있다.

 

 

1. server폴더에서 context.xml복사

 

2. WebCcontent>MERA-INF에 붙혀넣기

 

3. WebCcontent>MERA-INF>context.xml 열기

<?xml version="1.0" encoding="UTF-8"?>

<Context>
	<Resource name="jdbc/내가 정하는 이름" auth="Container"
		type="javax.sql.DataSource" maxTotal="100" maxIdle="30"
		maxWaitMillis="10000" username="디비유저명" password="디비유저비밀번호"
		driverClassName="com.mysql.cj.jdbc.Driver"
		factory="org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory"
		url="jdbc:mysql://localhost:3306/데이터베이스명" />
</Context>

 

4. WEB-INF>web.xml열기

 

5. 아래 코드 추가

<resource-ref>
	<description>DB Connection</description>
	<res-ref-name>jdbc/내가 정하는 이름</res-ref-name>
	<res-type>javax.sql.DataSource</res-type>
	<res-auth>Container</res-auth>
</resource-ref>

 

6. DBConn.java생성

package model;

import java.sql.Connection;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;


public class DBConn {
	public static Connection getConnection() throws Exception {
		Context initContext = new InitialContext();
		Context envContext = (Context) initContext.lookup("java:/comp/env");
		DataSource ds = (DataSource) envContext.lookup("jdbc/내가 정하는 이름");
		Connection conn = ds.getConnection();
		return conn;
	}
}

 

7. 접속이 문제없는지 테스트하기 -> dbTest.jsp생성

<%-- dbTest.jsp --%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ page import="model.DBConn, java.sql.*" %>

<%
	Connection conn = DBConn.getConnection();
%>

<%=conn%>
728x90
반응형