성장 일기/쌍용교육센터 / / 2023. 4. 13. 13:52

0413/DBCP, 로그인 흐름

쌍용교육센터에서 공부한 내용을 정리하며 기록하는 글이고 주관적인 생각이 들어갈 수 있습니다.
잘못된 내용이나 피드백 및 생각 공유는 언제든 환영입니다.
댓글로 남겨주시면 확인 후 수정하겠습니다.
내용에 대한 소스 코드는 https://github.com/2jaehoon/sangyoungjsp에 올려두었습니다.

 

JDBC

  - DB 작업이 필요한 때에만  DB와 연결하는 작업 방식

  - 서버의 자원을 절약할 수 있다.

 

* 작업 순서

1. 드라이버 로딩

2. 커넥션 얻기( 네트워크에서 DB 서버를 찾아 가야 하기 때문에 시간이 많이 소요

                         초기 지연 시간 발생)

3. 쿼리문 생성 객체 얻기

4. 쿼리문 생성 후 실행(레코드가 많으면 시간이 많이 소요)

5. 결과 받기

6. 연결 끊기(커넥션의 재사용이 되지 않는다.)

3, 4, 5번은 사용자가 필요한 작업

 

Tomcat의 DBCP 사용 순서

* 사용하기 위한 설정

1. DBMS에서 배포된 driver를 Tomcat에 설치( CATALINA_HOME 설치 )

2. DBCP가 필요한 Project에서 사용하기 위해 server.xml을 수정

    <Context>node에 자식 node로 <Resource> node를 추가한 후 편집

 

* 코드 작성 순서

1. JNDI 사용 객체 생성

2. 설정된 DBCP에서 DataSource를 얻기

3. DataSource에서 Connection 얻기

4. 쿼리문 생성 객체 얻기

5. 쿼리문 수행 후 결과 얻기

6. 연결 끊기

 

DBCP( DataBase Connection Pool )

  - DB커넥션을 일정 개수로 연결하고 사용하는 방식
  - 장점 : Connection을 얻기위한 초기 지연시간을 줄일 수 있다. ( Connection 재 사용성 향상 )

              Pool에서 Connection을 얻고, Connection을 종료하면 다시 Pool로 들어간다.
  - 단점 : 사용하지 않는 커넥션이 계속 연결되어 있기 때문에 메모리 낭비가 될 수 있다.
  - WAS에서 제공하기도 하고, jar로 배포되기도 한다.   
    WAS는 Tomcat에서 제공하는 DBCP사용

 

* setting                                      

<!--
1. 드라이버파일을 (ojdbc8.jar) CATALINA_HOME/lib(tomcat이 설치된 폴더)에 배포한다.
-->
<!--
2. server.xml에 <Context>노드 하위 노드로 <Resource>노드를 정의
   (<Resource>가 정의된 Context에서만  사용가능)
-->
<Context path="" docBase="">
<Resource name="jdbc/이름" ../>
</Context>


* coding                                                      

// 3. Project에서 존재하는 class 또는 JSP에서 DBCP( JNDI )를 찾고 사용
// JNDI(Java Naming & Directory Interface)

// 1.JNDI 사용 객체 : 이름으로 객체를 찾고 사용할 수 있다.
javax.naming.Context ctx=new javax.naming.InitialContext();

// 2. 이름으로 javax.sql.DataSource(DBCP안에서 DB와 연결하고 있는 객체) 객체 얻기
 DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/이름");

//3. DataSource로 부터 Connection을 얻는다.
Connection con=ds.getConnection();

 

* DBCP 흐름

 

* DBCP 설정할 때 server.xml 설정

<Resource name="jdbc/myoracle" 
auth="Container" type="javax.sql.DataSource“
 driverClassName="oracle.jdbc.OracleDriver" 
url="jdbc:oracle:thin:@127.0.0.1:1521:mysid" 
username="scott" 
password="tiger" 
maxTotal=“20" 
maxIdle="10" 
maxWaitMillis="-1"/> 
<!--
name : 설정할 DBCP명 ( JDNI에서 사용하는이름 )
type : DBMS와 Connection을 유지할 객체
driverClassName : 사용할 driver파일
url : 연결 URL
username, password : 연결 계정정보
maxTotal : 기본 연결을 모두 사용했을 때 최대연결 Connection 수
maxIdle : 기본 연결 Connection수
maxWaitMillis : Connection을 얻는 시간 -1 => 즉시
-->

 

* DBCP를 사용해서 insert 하는 과정

 

로그인 흐름

 

 

'성장 일기 > 쌍용교육센터' 카테고리의 다른 글

0415/FileUpload  (0) 2023.04.16
0414/DBMS 암호화  (0) 2023.04.16
0412/forEach, import, VO 출력  (0) 2023.04.13
0411/JSTL, core  (0) 2023.04.13
0410/scope 객체, EL  (0) 2023.04.10
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유