Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
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
Tags
more
Archives
Today
Total
관리 메뉴

ITSTEIN

JDBC, DBCP, JNDI는? DBCP vs JNDI 본문

JAVA

JDBC, DBCP, JNDI는? DBCP vs JNDI

the awesomest 2017. 7. 11. 17:58

Java에서 DB connection을 맺을때, DBCP를 사용하는 방법이 있고, JNDI를 사용하는 방법이 있다. 


DBCP, JNDI 모두 기본적인 JDBC를 사용한다. 


1. JDBC (Java DataBase Connectivity)

- 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API이다. JDBC는 데이터베이스에서 자료를 쿼리하거나 업데이트 하는 방법을 제공한다.

- 자바의 DB 컨넥셕의 기본이 됩니다. interface로서 각각의 DB벤더(oracle, mysql, sql server, maridb, postgresql ...)마다 jdbc 인터페이스를 구현한 드라이버를 제공함.



2. DBCP (DataBase Connction Pool)

- 아파치에서 만든 컨넥션 풀 오픈소스 라이브러리

- 컨넥션 풀을 활용한 컨넥션 재사용

- 일반적으로 DB 컨넥션의 생성은 시간과 자원을 많이 사용합니다. 미리 생성한 여러개의 컨넥션을 재사용하여 서버 부하 감소와 성능 증가의 효과



3. JNDI (Java Naming and Directory Interface)

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

- 분산환경에서 DB서버 컨넥션의 위치를 naming을 통해서 접근하도록 하는 J2EE 표준 기술 중 하나.

- DB 컨넥션 정보를 WAS단에서 관리한다. 주로 WAS의 context.xml 안에 정의함.

- JNDI 설정에서 connection pool 설정을 따로한다. DBCP를 사용 할 수 있음.



4. DBCP 직접 사용 VS JNDI

- 자바 소스에서 직접 관리하는 DBCP보다는 WAS에서 설정을 하는 JNDI를 보안상의 이유로 선호한다.

- 통신사의 서비스를 개발한 경우에.. 모두 JNDI를 사용하였음.

- JNDI를 사용하게 되면, DB의 Connection정보는 WAS에서 관리 하므로. 소스단에 노출되지 않는다. 

  운영서버의 중요정보가 일반 개발자에게 노출되지 않음. 보안상의 이점이 있음.

  DB접속 정보가 모든 개발자에게 완전히 오픈되는 것은 매우 위험 할 수 있다.


개인적으로... 보안적 이슈가 없다면(ex] 개인 취미 사이트?)...properties파일에서 DB정보를 관리하고, DBCP를 직접 사용하는것이 더 편하게 느껴진다.



다음 글에서는 DBCP , JNDI를 java springframework 환경에서 어떻게 설정하는지 알아보겠다.



Comments