일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- DataSource 설정
- Statement 단점
- import 오류
- Configure build path
- ServletContext 메서드
- 오라클 데이터베이스 접속
- 이클립스 톰캣 DataSource사용방법
- 서블릿에서 초기화하는방법
- load-on-startup
- ConnectionPool이란?
- ClassPath 경로
- 서블릿과 오라클 연동
- Session쿠키
- ServletConfig란
- 쿠키API
- JRE라이브러리 깨짐
- 스크립트 요소 예제
- 쿠키생성위치
- web.xml에 load-on-startup 설정
- PrepareStatement란?
- DataSource이란?
- Tomcat DataSource 설정
- 쿠키실행과정
- Project facet java version 10 is not supported
- Persistence 쿠키
- 자바 웹을 다루는 기술
- JNDI란
- 쿠키 종류
- 세션트래킹 이란
- 애너테이션으로 서블릿에서 초기화
- Today
- Total
백문이불여일타
Jsp&Servlet::DataSource ,ConnectionPool이란? 본문
앞 절에서는 회원 테이블에서 회원 정보를 조회하는 과정을 살펴봤다.
(▼아래링크참조)
https://java117.tistory.com/12
데이터베이스 연동과정 단점
데이터베이스 연동과정은 웹 애플리케이션이 필요할때마다 데이터베이스에 연결하여 작업하는 방식이다.
그런데 이런식으로 필요할때마다 연동해서 작업할경우 발생하는 문제가 하나 있다.
데이터베이스 연결에 시간이 많이 걸린다는것이다.
특히 온라인 쇼핑몰의 경우 동시에 수십명, 많게는 수백 명까지 접속해서 상품 조회, 주문하기 등의
기능을 사용하는데 앞의 방법처럼 데이터베이스와 연동해 작업해야 한다면 너무 비효율적이다.
이 문제를 해결하기 위해 현재는 웹 애플리케이션이 실행됨과 동시에 연동할 데이터베이스와의
연결을 미리 설정해 둔다.
그리고 필요할때마다 미리 연결해 놓은 상태를 이용해 빠르게 데이터베이스와 연동하여 작업을한다.
이렇게 미리 데이터베이스와 연결시킨 상태를 유지하는 기술을 커넥션풀(ConnectionPool) 이라고 한다.
기존 데이터베이스 연동방법의 문제점
ConnectionPool의 필요성
데이터베이스 프로그램에서 Connection 관리는 전체 System의 성능과 안전성에
큰 영향을 미치는 중요한부분이다.
하지만 일반적인 JDBC프로그래밍에서는 매번 클라이언트의 요청마다 ConnectionPool 을 이용한다.
대부분의 DBMS 프로그램에서는 직접 Connection 을 연결하여 작업하지 않고 ConnectionPool을 이용한다.
ConnectionPool이란?
ConnectionPool 이란 클라이언트의 요청 시점에 Connection을 연결하는것이 아니라
미리 일정수의 Connection을 만들어 놓고, 필요한 Application에 전달하여 이용하도록하는방법이다
Container 구동시 일정수의 Connection객체를 생성하게 되며 클라이언트의 요청에 의해
Application이 DBMS 작업을 수행해야 하면 ConnectionPool 에서 Connection객체를 받아와
작업을 진행하며 작업이 끝나면 다시 ConnectionPool에 반납하는 과정을 거친다.
ConnectionPool 에서는 Connection을 갑작스럽게 많이 사용하게 될 경우 미리 설정된 최대
Connection 수 만큼 증가하도록 하여 원활한 서비스가 되도록 지원을 한다.
이런 이유로 ConnectionPool을 설정할 경우에는 보통, 기본Connection수, 최대 Connection수
필요시 자동으로 증가하는 Connection수 등을 지정한다.
ConnectionPool은 개발자에 의해 직접 구현되어 이용될 수도 있지만 안정화되고
검증되기까지의 상당시간의 노력이 필요하므로 대부분 검증된ConnectionPool 을 이용하며
대부분의 WAS 에서 기능을 제공하고 있다.
DataSource 이란?
ConnectionPool 에는 여러개의 Connection 객체가 생성되어 운용되는데 각각 Application 에서
직접 이용하면 체계적인 관리가 힘들게 되므로 DataSource 라는 개념을 도입하여 사용하고 있다.
DataSource라는 객체는 ConnectionPool 을 관리하는 목적으로 사용되는 객체로 Application에서는
이 DataSource 객체를 통해서 Connection을 얻어오고 반납하는 등의 작업을 수행할수 있다.
Application 에서는 DataSource 객체르 얻음으로써 ConnectionPool 을 이용하게 되는데
이 DataSource 객체는 JNDI에 의해 Application에 전달하는 방식을 따르고있다.
DataSource를 이용하지 않는 기존의 방식(DriverManager를 이용한 방식)은 내부적으로
static한 필드를 사용하기 때문에 쓰레드 환경에서는 바람직하지 않다.
되도록 DataSource를 이용하여 Connection을 관리하는 것이 좋다.
커넥션풀 동작과정
톰캣 컨테이너에서 제공하는 커넥션풀의 동작과정을 살펴보자
1. 톰캣 컨테이너를 실행한 후 응용프로그램을 실행한다.
2. 톰캣 컨테이너 실행시 ConnectionPool 객체를 생성한다.
3. 생성된 커넥션 객체는 DBMS와 연결한다.
4. 데이터베이스와의 연동 작업이 필요할 경우 응용프로그램은 ConnetionPool 에서
제공하는 메서드를 호출하여 연동한다.
요약
톰캣컨테이너는 자체적으로 ConnectionPool 기능을 제공한다.
톰캣 실행시 톰캣은 설정파일에 설정된 데이터베이스 정보를 이용해 미리 데이터베이스와 연결해서
ConnectionPool 객체를 생성한 후 애플리케이션이 데이터베이스와 연동할 일이 생기면
ConnectionPool 객체의 메서드를 호출해 빠르게 연동해 작업한다.
'Java' 카테고리의 다른 글
Jsp&Servlet:: JNDI란? , 이클립스 톰캣 DataSource 설정방법 (0) | 2019.07.19 |
---|---|
Jsp&Servlet:: PrepareStatement란? _실습포함 (0) | 2019.07.19 |
DTO, VO 차이점 (0) | 2019.07.19 |
DTO,DAO 차이점 (0) | 2019.07.19 |