JSP 커넥션 풀

MINJU KIM·2023년 12월 5일

JSP

목록 보기
13/30

커넥션 풀

커넥션 풀 동작 검증

//DBConnPool.java
package com;

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

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;

public class DBConnPool {
    public Connection con; // 데이터베이스 연결을 담당
    public Statement stat; // 파라미터 없는 경우 쿼리문 실행할 때 사용
    public PreparedStatement psmt; // 파라미터가 있는 동적 쿼리문을 실행할 때 사용
    public ResultSet rs; // 쿼리 결과문을 담을 때 사용

    //기본 생성자
    public DBConnPool(){
    try{
        Context initCtx = new InitialContext();
        Context ctx = (Context)initCtx.lookup("java:comp/env");
        //루트 디렉토리에 위치한 java:comp/env를 가져옴.
        DataSource source = (DataSource)ctx.lookup("dbcp_myoracle");

        con = source.getConnection();

        System.out.println("DB커넥션 풀 연결 성공");

    }catch (Exception e){
        System.out.println("DB커넥션 풀 연결 실패");
        e.printStackTrace();
    }
    }
    //연결 해제(자원 반납)
    public void close(){
        try{
            if (rs != null)rs.close();
            if (stat != null)stat.close();
            if (psmt != null)psmt.close();
            if (con != null)con.close();

            System.out.println("DB 커넥션 풀 자원 반납 ");

        }catch(Exception e){
            e.printStackTrace();
        }
    }



}

jsp파일에 커넥션 풀 테스트 코드 추가

<%@ page import="com.common.JDBConnect" %>
<%@ page import="com.DBConnPool" %>
//DBConnPool 클래스 임포트 해줘야함.
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<html>
<head>
    <title>JDBC 연결</title>

<%--    요청이 있을 때마다 DB connection을 새로 연결하고 해제하면 시간이 많이 걸린다.

커넥션 풀 Connection Pool
Connection을 미리 생성해두고 필요할 때 가져다 쓰고 완료되면 반납하는 형식--%>
</head>
<body>

<h2>커넥션 풀 연결 테스트 01</h2>
<%
DBConnPool pool = new DBConnPool();

pool.close();
%>
</body>
</html>
//server.xml 부분에 아이디랑 비번 확인해주기 
<Resource auth="Container"
            driverClassName = "oracle.jdbc.OracleDriver"
            type="javax.sql.DataSource"
            initialSize = "0"
            minIdle="5"
            maxTotal ="20"
            maxIdle ="20"
            maxWaitMillis="5000"
            url="jdbc:oracle:thin:@localhost:1521:ORCL"
            name="dbcp_myoracle"
            username="test"
            password="bitc5600"/>

<%@ page import="com.common.JDBConnect" %>
<%@ page import="java.sql.PreparedStatement" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>JDBC</title>

</head>
<body>
<h2>회원 추가 테스트</h2>

<%
//db연결
    JDBConnect jdbc = new JDBConnect();

    String id = "mj";
    String pwd = "1234";
    String name = "김민주"

    //쿼리문 생성
    String sql = "INSERT INTO member VALUES(?, ?, ?, sysdate)";
    PreparedStatement psmt = jdbc.con.prepareStatement(sql);
    psmt.setString(1, id);
    psmt.setString(2, pwd);
    psmt.setString(3, name);

    //쿼리 수행
    int inResult = psmt.executeUpdate();
    out.println(inResult + " 행이 입력되었습니다.");

    //연결 닫기
    jdbc.close();



%>


</body>
</html>


오라클에 만들어둔 MEMBER의 4항목에 들어갈 것이다.

추가하면 추가가 된 걸 볼 수 있다.

0개의 댓글