본문 바로가기

JSP

DB풀링기법(커넥션풀)

# DB 연동 
-    기존방식은 호출될때 db연결함 그래서 느려짐
-    하지만이제 Connection객체를 미리 10개를 생성해둠 pool( 메모리에 ) 
-    이것이 db 풀링 기법!!!

# db풀링기법( 커넥션풀 ) 하는법
톰캣이 켜지자말자 10~20개미리만들어놓음

1.톰캣홈피에가서 jdbc부분에서 잘찾아볼것 oracle부분을 

2.server.xml에 36번쯤에있는 <GlobalNamingResources>안에 붙혀넣기
<Resource name="jdbc/myoracle"
                 auth="Container"
                 type="javax.sql.DataSource"
                 driverClassName="oracle.jdbc.OracleDriver"
                 url="jdbc:oracle:thin:@127.0.0.1:1521:xe"
                 username="scott"
                 password="tiger"
                 maxActive="20"
                 maxIdle="10"
                 maxWait="-1"     />

127.0.0.1 이 localhost 임!

3. context.xml에서 맨밑에 종료안에넣기
 <ResourceLink global="jdbc/myoracle" name="jdbc/myoracle" type="javax.sql.DataSource"/>


4. 기존의DBConnect를 다음과같이 만듬
ConnUtil.java
=============================
package com.joo.common.util;

import java.sql.SQLException;
import java.sql.Connection;

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

public class ConnUtil{
     public static Connection getConnection() throws SQLException, NamingException,
                                             ClassNotFoundException{

                 // comp/env는 리소스가 저장되어있는? jndi 디폴트 경로라는데... 걍쓸것
          Context initCtx = new InitialContext();
          Context envCtx = (Context) initCtx.lookup("java:comp/env"); 
          DataSource ds = (DataSource) envCtx.lookup("jdbc/myoracle");

          // 혹은 간단히 이렇게 해도됨 
          // Context initCtx = new InitalContext();
          // DataSource ds = (DataSource) initCtx.lookup("java:comp/env/jdbc/myoracle");

          Connection conn = ds.getConnection();
          return conn;
     }
}


5. a.jsp 에서 다음과같이 실행하면 접속정보출력
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ page import="com.joo.common.util.*" %>
<%@ page import="java.sql.*" %>
<%
      Connection conn=ConnUtil.getConnection();
%>
<%=conn%>


6.  a.jsp 에서 다음과같이 실행하면 DB연동 테스트완료(이방식말고 conn.prepareStatement 방식도 있음! )
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding= "EUC-KR"%>
<%@ page import="com.joo.common.util.*" %>
<%@ page import="java.sql.*" %>
<%
       Connection conn=ConnUtil.getConnection();     // DB접속정보 객체 가져옴
       Statement stmt=conn.createStatement();
       ResultSet rs=stmt.executeQuery( "select empno from emp");
        while(rs.next()){
              out.println(rs.getInt( "empno")+"<br>" );
       }
%>
prepareStatement방식( 이방식이 효율적임 )
( 위처럼 jsp가 아닌 java에서(백엔드라서?) 코딩 )
import test10.ConnUtil;
import java.util.*;
import java.sql.*;

public class BoardDAO{
    ...
    public Board selectBoard(int board_seq){
        Connection conn = null;
        PreparedStatement pstmt = null;
        
        try{
            StringBuffer selectQuery = new StringBuffer();
            selectQuery.append("select * from newBoard");
            selectQuery.append("where board_seq = ?");

            conn = ConnUtil.getConnection();
            pstmt = conn.prepareStatement(selectQuery.toString());
            pstmt.setInt( 1, board_seq );
            ResultSet rs = pstmt.executeQuery();
        
            Board board = null;
            if( rs.next() ){
                board = new Board();
                board.setBoard_seq( rs.getInt("board_seq") );
               board.setRef_seq( rs.getInt("ref_seq") );
            }
        }catch( Exception e ){
            tyrow new RuntimeException( e.getMessage() );
        }finally{
            try{
                pstmt.close();
                conn.close();
                pstmt = null;
                conn = null;
            }catch( Exception e ){
            }
        }
    }
}




* 만약 이클립스에서 서버 삭제후 재 추가시 server name이 빈칸으로 나올때 다음과같이 이클립스 설정정보를 삭제해야한다.

     1. Close Eclipse
     2. 워크스페이스/.metadata/.plugins/org.eclipse.core.runtime/.settings 에 다음 두파일을 삭제해야함!

          =>  org.eclipse.wst.server.core.prefs
                 org.eclipse.jst.server.tomcat.core.prefs
     
     3. Restart Eclipse















'JSP' 카테고리의 다른 글

JSP 경로 / 파일관련  (0) 2019.03.09
include지시자 / 쿠키  (0) 2019.03.09
현재 접속자수 표시  (0) 2019.03.09
로그인 화면이동( 화면이동방법 3가지 )  (0) 2019.03.09
총 방문자수 찍기  (0) 2019.03.09