DataSource 이용해 데이터베이스 연동하기
미리 데이터베이스와 연결시킨 상태를 유지하는 기술을 커넥션풀(ConnectionPool)이라고 부릅니다.
커넥션풀 동작 과정
1. 톰캣 컨테이너를 실행한 후 응용 프로그램을 실행합니다.
2. 톰캣 컨테이너 실행 시 ConnectionPool 객체를 생성합니다.
3. 생성된 커넥션 객체는 DBMS와 연결합니다.
4. 데이터베이스와의 연동 작업이 필요한 경우 응용 프로그램은 ConnectionPool에서 제공하는 메서드를 호출하여 연동합니다.
톰캣 컨테이너는 자체적으로 ConnectionPool 기능을 제공합니다. 톰캣 실행 시 톰캣은 설정 파일에 설정된 데이터베이스 정보를 이용해 미리 데이터베이스와 연결하여 ConnectionPool 객체를 생성한 후 애플리케이션이 데이터베이스와 연동할 일이 생기면 ConnectionPool 객체의 메소드를 호출해 연동하여 작업합니다.
JNDI
실제 웹 애플리케이션에서 ConnectionPool 객체를 구현할 때는 JAVA SE에서 제공하는 javax.sql.DataSource 클래스를 이용합니다. 그리고 웹 애플리케이션 실행 시 톰캣이 만들어 놓은 ConnectionPool 객체에 접근할 때는 JNDI를 이용합니다.
JNDI(Java Naming and Directory Interface)란 필요한 자원을 키/값(key/value) 쌍으로 저장한 후 필요하는 데 키를 이용해 값을 얻는 방법입니다. 즉, 미리 접근할 자원에 키를 지정한 후 애플리케이션이 실행 중일 때 이 키를 이용해 자원에 접근을 하는 것입니다.
톰캣의 DataSource 설정 및 사용 방법
실제 톰캣에서 ConnectionPool 기능을 사용하려면 이 기능을 제공하는 DBCP 라이브러리를 따로 내려 받아야 합니다. 이 라이브러리 파일은 jar 압축 파일 형태로 제공되며, 다음 링크에서 tomcat-dbcp-7.0.30.zip 파일을 내려 받은 후 압축을 풀면 됩니다.
- http://www.java2s.com/Code/Jar/t/Downloadtomcatdbcp7030jar.htm
이클립스에서 톰캣 DataSource 설정
JDBC 드라이버와 ConnectionPool 관련 jar 파일 및 이클립스에서 생성한 톰캣 서버의 설정 파일인 context.xml의 위치를 알 수 있습니다.


context.xml 파일을 보면 <Resource> 태그를 이용해 톰캣 실행 시 연결할 데이터베이스를 설정하는 것을 알 수 있습니다.
<Resource
name="jdbc/oracle"
auth="Container"
type="javax.sql.DataSource"
driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@localhost:1521:XE"
username="scott"
password="tiger"
maxActive="50"
maxWait="-1"/>
오라클 데이터베이스(오라클 DBMS)을 연결할 때 다른 속성들은 고정적으로 사용하며, 프로그래머가 주로 설정하는 정보는 driverClassName, user, password, url만 변경해서 설정합니다.
| 속성 | 설명 |
| name | DataSource에 대한 JNDI 이름 |
| auth | 인증 주체 |
| driverClassName | 연결할 데이터베이스 종류에 따른 드라이버 클래스 이름 |
| factory | 연결할 데이터베이스 종류에 따른 ConnectionPool 생성 클래스 이름 |
| maxActive | 동시에 최대로 데이터베이스에 연결할 수 있는 Connection 수 |
| maxIdle | 동시에 idle 상태로 대기할 수 있는 최대 수 |
| maxWait | 새로운 연결이 생길 때까지 기다릴 수 있는 최대 시간 |
| user | 데이터베이스 접속 ID |
| password | 데이테베이스 접속 비밀번호 |
| type | 데이터베이스 종류별 DataSoruce |
| url | 접속할 데이터베이스 주소와 포트 번호 및 SID |
'프로그래밍 언어 > 자바 웹' 카테고리의 다른 글
| DataSource 이용해 회원 정보 등록하기 (1) | 2025.06.03 |
|---|---|
| 톰캣의 DataSource로 연동해 회원 정보 조회 실습 (1) | 2025.05.31 |
| PreparedStatement를 이용한 회원 정보 실습 (1) | 2025.05.25 |
| 서블릿의 비지니스 로직 처리 방법 & 서블릿의 데이터베이스 연동하기 (1) | 2025.05.22 |
| 서블릿을 이용한 여러 가지 실습 예제 (4) | 2025.05.18 |