쌍용교육센터에서 공부한 내용을 정리하며 기록하는 글이고 주관적인 생각이 들어갈 수 있습니다.
잘못된 내용이나 피드백 및 생각 공유는 언제든 환영입니다.
댓글로 남겨주시면 확인 후 수정하겠습니다.
내용에 대한 소스 코드는 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 |