기록공간

JDBC 개념정리 본문

DataBase/JDBC

JDBC 개념정리

입코딩 2020. 10. 31. 15:32
반응형

JDBC(Java DataBase Connectivity)

JDBC는 자바 프로그램이 DBMS에 일관된 방식으로 접근할 수 있도록 API를 제공하는 자바 클래스들의 모임이다. 즉 데이터베이스에 연결 및 작업을 하기 위한 JAVA의 표준 인터페이스이다.

 

JDBC는 다음과 같은 특징을 가진다.

 

  1. JDBC는 함수 호출용 SQL 인터페이스이다.

  2. JDBC는 ANI SQL-92 표준을 지원한다.

  3. JDBC는 공통된 SQL 인터페이스를 바탕으로 한다.

  4. JDBC는 익히고 사용하기 쉽다.

 

JDBC 구성(요소)

  • 응용 프로그램

    1. 데이터베이스에 연결을 요청

    2. 데이터베이스에 SQL문을 전송

    3. SQL 문의 처리 결과 요청

    4. 오류가 발생하는 경우에 오류 처리

    5. 트랜잭션을 제어 

    6. 연결 종료

  • 드라이버 매니저

    1. 데이터베이스에 맞는 드라이버 검색

    2. JDBC 초기화를 위한 작업 수행

  • 드라이버

    1. 데이터베이스에 연결

    2. 데이터베이스에 SQL문을 전달

    3. 응용 프로그램에 검색 결과 전달

    4. 필요한 경우 커서를 조작

    5. 필요한 경우 트랜잭션을 시작

  • DBMS

    1. 데이터가 저장되어 있는 장소

 

JDBC 시스템 아키텍처(System Architecture)

JDBC API는 2-tier(2 계층)와 3-tier(3 계층)를 모두 지원한다.

 

※ tier
    tier란 일련의 유사한 객체가 나열된 상태에서 계층 또는 열을 나타낸다.
    프로그램의 일부가 여러 객체에 나뉘어 존재할 수 있으며
    그 계층 또한 네트워크 상에서 다른 컴퓨터에 위치할 수 있다.

 

  • 2-tier

    • 자바 애플릿이나 애플리케이션이 JDBC를 이용하여 DBMS에 직접 접근하는 방식이다.

    • 가장 대표적인 C/S (Client/Server) 구조이다.

    • 프로그래밍이 간단하다는 장점이 있다.

    • 하지만 보안, 로드밸런싱(서버 부하 분담), 확장성(오브젝트 재사용) 등의 문제점이 있다.

2-tier가 적합한 경우는 다음과 같다.

 

- 애플리케이션의 하나의 데이터베이스만을 사용하는 경우
- 데이터베이스 엔진이 하나의 CPU에서 동작하는 경우
- 데이터베이스가 계속 거의 같은 크기로 유지되는 경우 
- 사용자 기반이 같은 크기로 유지되는 겨우
- 요구가 확정되어, 변환 가능성이 극히 적거나 없는 경우
- 애플리케이션을 종료한 후에도 최소한의 지속성을 요구하는 경우

 

  • 3-tier

    • 자바 애플릿이나 어플리케이션이 DBMS에 직접 접근하지 않고 중간에 미들웨어(미들티어)를 거쳐서 데이터베이스에 접근하는 방식이다.

    • 데이터베이스와 연동 부분을 분리시킴으로써 Presentation Layer가 데이터 저장 방법에 신경을 쓰지 않아도 된다.

    • 클라이언트는 단지 미들티어만을 참조한다. 

    • 미들티어 서버는 DBMS와 같이 특정한 작업만 수행하는 최종 서버와 통신을 하여 결과를 얻은 후 이 결과를 클라이언트에 전달한다.

    • 2-tier 모델과 비교했을때 훨씬 안정적이고 유연하며 보안이 강화된다. 

다음 그림은 2-tier와 3-tier를 표현한 것이다. 왼쪽부터 1-tier로 시작하여 오른쪽으로 갈수록 한 계층씩 증가한다.

 

3-tier 아키텍처 같은 경우에는 중간 2-tier에 http, 코바(CORBA) 등을 지원하기 위한 응용 처리 서버(Application Server)가 온다. 

 

JDBC 드라이버(Driver) 유형

  • Type 1 

    • JDBC-ODBC Driver

    • 현재는 거의 사용되지 않는다.

    • 특징

      1. 데이터베이스를 연동하기 위해 브릿지 기술을 이용한다.

      2. ODBC API로의 게이트웨이를 제공하여 실제로는 ODBC의 API를 구현함으로써 데이터베이스를 연동한다.

      3. 브리지 보통 클라이언트에 소프트웨어가 설치될 것을 요구한다. 

      4. JDBC-ODBC Driver는 ODBC Driver가 풍부하기 때문에 거의 대부분 데이터베이스 시스템에서 사용할 수 있다. 그래서 JDBC-ODBC Driver를 사용하는 클라이언트에 이미 ODBC Driver가 설치되어 있는 경우 매우 유용하게 사용할 수 있다.

      5. JDBC를 통해 호출된 명령이 다시 ODBC를 통해 나가야 하기 때문에 두 개의 브릿지를 거치며, 이로 인해 빠른 속도를 기대하기 어렵다. 즉, 빠른 성능을 요구하는 애플리케이션의 경우에는 Type 1, JDBC-ODBC 브릿지는 적당하지 않다.

      6. JDBC-ODBC 브릿지를 사용하는 시스템에는 반드시 해당 데이터베이스에 연결하기 위한 ODBC Driver가 설치되어야 한다. 이 단점은 애플릿에서 JDBC를 사용하여 프로그래밍 해야 하는 경우 많은 문제가 된다. 애플릿을 이용하여 JDBC-ODBC를 사용할 경우, 애플릿을 다운로드한 클라이언트에 해당 ODBC Driver가 미리 설치되어 있어야 하기 때문에 배포 등에 많은 문제가 발생하게 된다.

 

  • Type 2

    • Native-API / Partly Java Driver (일부가 자바로 이루어져 있음)

    • 특징

      1. 각각의 데이터베이스 제조 업체들이 제공한 C 혹은 C++ 메소드를 자바 코드로 호출하는 방식이다.

      2. 부분적으로 자바 드라이버인 원시 API 라고 일컫는다.

      3. 데이터베이스와 연결되는 부분이 Native Code로 구현되어 있는 만큼 JDBC-ODBC 브릿지에 비해 빠른 속도를 제공한다.

      4. JDBC Driver를 사용하고자 하는 각각의 클라이언트에 DBMS Vender의 데이터베이스 라이브러리가 로드되어야 하기 때문에 인터넷이나 C/S 환경에는 사용하기 적합하지 않다. 또한 Type 3, 4 드라이버에 비해 낮은 성능을 보인다.

 

  • Type 3

    • Net-Protocol / All-Java Driver (순수 자바로 이루어져 있음)

    • 클라이언트에서 일반적인 Network API를 이용해 보낸 정보를 서버가 Database에 독점적인 형태로 변환하는 방식

    • 특징

      1. 클라이언트에 존재하는 JDBC Driver는 소켓(Socket)을 사용하여 서버에 존재하는 미들웨어(Middleware) 애플리케이션에 연결한다.

      2. 미들웨어 애플리케이션은 클라이언트 요청을 사용하고자 하는 데이터베이스에 독점적인 API로 전환된다.

      3. 하나의 드라이버로 여러 개의 데이터베이스를 연동한다.

      4. 네트워크를 통해 미들웨어를 거치기 때문에 클라이언트에 소프트웨어를 설치할 필요가 없다.

 

  • Type 4

    • Native-Protocol / All-Java Driver (순수 자바로 이루어져 있음)

    • Database Engine에 사용되는 Network Protocol을 Java Socket으로 직접 Database에 교신하는 방식이다.

    • 특징

      1. 가장 직접적인 순수 자바 솔루션이다.

      2. 거의 대부분 데이터베이스 제조업체가 제공하고 있다.

      3. ODBC 나 Native Lib(원시 라이브러리) 형태로 요청을 변환하지 않기 때문에 성능이 매우 좋다. 또한 특별하게 드라이버나 라이브러리, 미들웨어 등을 설치할 필요가 없기 때문에 배포 등이 매우 용이하다.

 

Oracle JDBC Driver

Type 2

오라클 [ OCI Driver ]라고 불린다. 현재는 거의 쓰이지 않는 드라이버이다.

 

OCI8, OCI9 드라이버는 각각 Oracle8, Oracle9 데이터베이스를 지원한다. 이러한 드라이버는 한정된 플랫폼으로 모든 오라클 드라이버는 JDK 1.0과 1.1x에 종속적이며 JDBC 1.22 표준을 지원한다. 또한, Net8을 포함하는 Oracle Client를 설치해야 사용이 가능하다.

 

Type 4

오라클 [ Thin Driver ]라고 불린다.

 

자바로 작성된 Net8의 TCP/IP(프로토콜) 버전의 자체적인 실행을 포함하며 플랫폼에 독립적이고 실행 시간에 브라우저로 다운로드된다. 그리고 서버 측에서는 TCP/IP Listener가 필요하며 연결 스트링은 TNSNAMES 엔트리가 아닌 TCP/IP 주소와 포트번호이다.

 

URL 형식은 다음과 같이 작성하도록 약속한다.

※ URL Format
jdbc:oracle:thin:@[호스트 IP주소]:[포트번호]:[데이터베이스(xe, ...)] 

 

JDBC API

JDBC API는 데이터베이스의 데이터를 액세스 할 수 있도록 제공되는 표준 자바 API 클래스와 인터페이스로 구성되며 다음의 기능을 실행하기 위한 클래스와 인터페이스를 제공한다. 

 

  • Java 프로그램에서 데이터베이스 서버에 접속

  • SQL 문을 구성, 데이터베이스 서버에서 실행

  • 데이터베이스 서버가 처리한 결과 가져오기

  • 데이터베이스의 정보, 처리 결과에 대한 정보 등을 가져오기

※ [java.sql.*] 패키지
    
- Java Application으로 부터 Database를 조작하는 API는 JDK 코어 API로 java.sql 패키지에 설정되어 있다.

- JDBC는 데이터베이스에 접속하기 위해 한 개의 클래스(java.sql.DriverManager)와 두 개의 인터페이스(java.sql.Driverjava.sql.Connection)을 사용한다. 

 

 

 

 

반응형

'DataBase > JDBC' 카테고리의 다른 글

CallableStatement  (0) 2020.11.08
PreparedStatement  (0) 2020.11.08
DAO, DTO 그리고 Process  (0) 2020.11.07
JDBC 프로그래밍 절차 및 구현  (0) 2020.10.31
Comments