ITSTEIN
JDBC, DBCP, JNDI는? DBCP vs JNDI 본문
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 환경에서 어떻게 설정하는지 알아보겠다.
'JAVA' 카테고리의 다른 글
java.net.SocketException : Connection reset 에러 해결기 (1) | 2018.03.23 |
---|---|
javax.net.ssl.SSLHandshakeException 해결기 (1) | 2018.03.23 |
spring과 mybatis 연동 (0) | 2018.03.15 |
java equals(), hashCode() 분석 (0) | 2018.03.14 |