외우지말고 이해하라.

외우는 것 보단 이해해서 내것으로 만들어 활용하기

Web Back-End/MySQL

JDBC, DBCP, JNDI 차이점

hyg4196 2024. 9. 8. 14:55
반응형

JDBC, DBCP, JNDI ?

JDBC 란?

JDBC는Java DataBase Connectivity의 약자이며, 데이터베이스를 조작하는 표준 SQL 인터페이스 API이다.

  • 인터페이스 기반 구축 (데이터베이스 커넥션 인터페이스)
  • 이론적으로 각 DBMS에 맞는 JDBC를 받아주게 되면 쉽게 DBMS를 변경 가능

일반적으로 JDBC는 Database Pool 방식을 사용하지 않고 DB에서 정보를 가져올 때마다 매번 디비 Connection을 열고 닫는다. 따라서 매우 비효율적이기 때문에 상용 어플에서 JDBC 방식을 사용하는 경우는 거의 없다.


JDBC 기능 설명

데이터베이스 연결 다양한 종류의 데이터베이스에 연결할 수 있습니다. (MySQL, Oracle, SQL Server 등)
SQL 문 실행 SQL 문을 실행하고 결과를 Java 어플리케이션에서 사용할 수 있습니다.
데이터베이스 관리 데이터베이스 테이블을 생성하거나 수정하고, 데이터를 삽입, 업데이트, 삭제할 수 있습니다.
트랜잭션 관리 데이터베이스 트랜잭션을 관리하고, 여러 작업을 하나의 단위로 묶을 수 있습니다.

 

 

커넥션 풀(DBCP)의 개념

  • 웹 컨테이너(WAS)가 실행되면서 일정량의 Connection 객체를 미리 만들어서 pool에 저장했다가, 클라이언트 요청이 오면 Connection 객체를 빌려주고 해당 객체의 임무가 완료되면 다시 Connection 객체를 반납 받아서 pool에 저장하는 프로그래밍 기법이다.
  • Container 구동 시 일정 수의 Connection 객체를 생성하게 되며 클라이언트의 요청에 의해 애플리케이션이 DBMS 작업을 수행해야 하면, Connection Pool에서 Connection 객체를 받아와 작업을 진행한다. 이후 작업이 끝나면 Connetion Pool에 Connection 객체를 반납한다.

DBCP 란?

DBCP는 DataBase Connection Pool의 약자이며, JDBC 방식보다는 일반적인 경우 사용한다.

    • 어플리케이션을 시작할 때 원하는 만큼 Connection 객체를 만들어 Pool에 넣어놓은 채 필요할 때마다 가져다 쓰고 다시 반납하는 방식
    • 다중스레드를 스레드풀로 관리하는 방식과 비슷 보통 Database Connection Pool을 Application 소스단에 설정해놓는 방식


 

DBCP의 장점

  • DB 접속 설정 객체를 미리 만들어 연결하여 메모리 상에 등록해 놓기 때문에 불필요한 작업(커넥션 생성, 삭제)이 사라지므로 클라이언트가 빠르게 DB에 접속이 가능하다.
  • DB Connection 수를 제한할 수 있어서 과도한 접속으로 인한 서버 자원 고갈 방지가 가능하다.
  • DB 접속 모듈을 공통화하여 DB 서버의 환경이 바뀔 경우 쉬운 유지 보수가 가능하다.
  • 연결이 끝난 Connection을 재사용함으로써 새로 객체를 만드는 비용을 줄일 수 있다.

애플리케이션이 시작될 때 미리 여러 개의 데이터베이스 커넥션(Connection)을 커넥션 풀(Connection Pool)에 생성해 놓고 필요할 때마다 사용 후 반환하여 이를 재사용할 수 있게 해 줍니다.

JNDI 란?

Java Naming and Directory Interface의 약자이며, WAS단에 DB Connection 자체를 미리 네이밍해두는 방식이다.

DB Connection을 WAS단에서 제어하면서 서버에서 하나의 Connection Pool을 가짐 (공유객체를 사용) Application이 DB에 직접 Connection을 요청하는 것이 아니라 JNDI lookup을 통해 Datasource 객체를 획득하고 그것을 Connection 요청

  • 자바 애플리케이션을 외부 디렉터리 서비스에 연결 (예: 주소 데이터베이스 또는 LDAP 서버)
  • 자바 애플릿이 호스팅 웹 컨테이너가 제공하는 구성 정보를 참고
  • 장점1 : DB 설정 정보를 파악하기 쉽다
    • WAS단에 설정정보를 통해 DB가 몇 개 붙어있는지 파악하기 수월하다.
  • 장점2 : DB Connection Pool을 효율적으로 사용할 수 있다.
    • WAS단에서 DB Pool을 하나로 관리하면 static 객체를 생성 후에 쉽게 가져다 쓸 수 있기 때문에 효율이 좋아진다.

JDBC : 데이터베이스를 조작하는 표준 SQL 인터페이스 API - Database Pool 방식을 사용하지 않고 DB에서 정보를 가져올 때마다 매번 DB Connection을 열고 닫는다. 따라서 매우 비효율적

DBCP : JDBC의 단점을 보안하여, Database pool 방식을 사용

JNDI : Connection pool 을 효율적으로 관리하기 위한 JAVA API

 

반응형

'Web Back-End > MySQL' 카테고리의 다른 글

MySQL 학습 02 - IFNULL, union, TRUNCATE  (0) 2021.05.21
MySQL 학습 01 - UNSIGNED, AUTO_INCREMENT , INNER JOIN  (0) 2021.05.18
MySQL 연습장 02  (0) 2021.05.18
MySQL 연습장 01  (0) 2021.05.17