JDBC (Java DataBase Connectivity)

  - 데이터베이스를 조작하는 API 이다.

  - java.sql 패키지에 위치하고 있다.

 

JDBC API

  - 데이터베이스와의 통신 (Connection , Statement, Result 등.. 객체)

  - SQL문을 구성 DB서버에서 실행

  - SQL문에 대한 결과를 반환

 

 

JDBC의 특징 및 장점

   - JDBC는 인터페이스기반으로 구축 되어있다. 어떠한 데이터베이스를 사용하더라도 동일한 코드로 작성한다.

 

---------------------------------------------------------------------------------------------------------

JNDI(Java Naming and Directory Interfase)

  - 디렉토리 서비스에서 제공하는 데이터 및 객체를 발견하고 참고 하기 위한 자바 API

  - J2EE 플랫폼의 일부

  - 여러대의 서버간에 JNDI를 이용하여 객체를 등록, 참조하여 이용

  - javax.naming 패키지안에 존재

  - 여러 웹 서버(톰켓,웹로직,제우스 등)에서의 사용

  - 기본 네임스페이스의 java:com/env 이다.

 

Tomcat JNDI 설정 (jdbc)

 아래의 소스는 DBCP 설정을 할때 자주 보는 소스이다.

   모든 리소스들은 JNDI 네임스페이스의 java:com/env 부분에 설정됨

 

   Context initCtx = new InitialContext();

   Context envCtx = (Context) initCtx.lookup("java:comp/env");
   envCtx.lookup("리소스명");

위의 리소스명은 web.xml에 작성된 <res-ref-name>의 값과 일치 해야 할 것이고,

<resource-ref>
<description> Resource </description>
<res-ref-name> jdbc/EmployeeDB </res-ref-name>
<res-type> javax.sql.DataSource </res-type>
<res-auth> Container </res-auth>
</resource-ref>

또 server.xml에 작성된 Resouce name 과 같아야 한다.

<Resource name="jdbc/EmployeeDB"
       auth="Container"
       type="javax.sql.DataSource"
       username="dbusername"
       password="dbpassword"
       driverClassName="driverName"
       url="jdbc:oracle:thin...."
      maxActive="8"
      maxIdle="4"

/>
---------------------------------------------------------------------------------------------------------

 

하나의 웹 어플리케이션에 여러개의 리소스가 생길 수 있다.

결국 이말은 하나의 웹 홈페이지에서 리소르를 추가해 두개이상의 데이터베이스를 접속할 수 있다는 것이다.

 

JDBC와 JNDI를 쉽게 말해

데이터베이스를 이용한 홈페이지를 만들기 위해서는 데이터베이스에 접속하기 위해 jdbc 드라이버가 필요 하고,

이 jdbc가 데이터베이스를 조작하는데 있어 객체를 발견하고 참고 하기위해 편한 JNDI가 있다.

커넥션풀(DBCP)를 이용할 때 위와 같이 두개를 쓸 것이다.

+ Recent posts