70. DataSource와 JNDI (1)
JDK 1.4 버전부터 포함된 DataSource에 대해 배운다. DataSource는 JDBC 확장 API를 정의한 javax.sql 패키지에 들어 있다. Java EE 서버(예 : 톰캣 서버)에서 DB 커넥션 풀을 관리하는 방법에 대해 알아본다. JNDI API를 사용하여 Java EE 서버 자원에 접근하는 방법을 배운다.
1. javax.sql 확장 패키지
javax.sql 패키지는 java.sql 패키지의 기능을 보조하기 위해 만든 확장 패키지다. 서버 쪽 데이터 소스에 대한 접근을 쉽게 하고, 좀 더 다양한 방법으로 데이터를 다룰 수 있는 API를 제공한다. 이 패키지는 JDK 1.4 부터 포함되었다. Java EE 에서도 기본 패키지로 정의되어 있다.
javax.sql 패키지가 제공하는 주요 기능은 다음과 같다.
▶ DriverManager를 대체할 수 있는 DataSource 인터페이스 제공
▶ Connection 및 Statement 객체의 플링
▶ 분산 트랜잭션 처리
▶ Rowsets의 지원
이 중에서 DriverManager를 대체할 수 있는 DataSource에 대해 알아본다.
2. DataSource
DataSource는 DriverManager를 통해 DB 커넥션을 얻는 것보다 더 좋은 기법을 제공한다. 특히 다음 2가지 점에서 DriverManager 보다 낫다.
첫 째, Datasource는 서버에서 관리하기 때문에 데이터베이스나 JDBC 드라이버가 변경되더라도 애플리케이션을 바꿀 필요가 없다(그림 1).
그러나 다음 그림과 같이 DriverManager를 사용하는 경우, 웹 애플리케이션에서 관리하기 때문에 데이터베이스의 주소가 바뀐다거나 JDBC 드라이버가 변경될 경우 웹 애플리케이션의 코드도 변경해야 한다(그림 2).
둘 째, DataSource를 사용하면 Connection과 Statement 객체를 풀링할 수 있으며, 분산 트랜잭션을 다룰 수 있다(그림 3).
이렇게 DataSource는 자체적으로 커넥션풀 기능을 구현하기 때문에 웹 애플리케이션 쪽에서 따로 작업할 것이 없어 매우 편리하다.
하지만, 다음 그림에서처럼 DriverManager를 사용할 경우, 애플리케이션 개발자가 커넥션풀을 별도로 준비해야 한다. 지금까지 작성한 예제도 우리가 직접 커넥션풀을 관리했다(그림 4).
이제 실습을 통해 확인한다.
참고도서 : https://freelec.co.kr/book/1674/
[열혈강의] 자바 웹 개발 워크북
[열혈강의] 자바 웹 개발 워크북
freelec.co.kr