본문 바로가기
교재 실습/자바 웹 개발 워크북

21. JDBC와 데이터베이스

by Jint 2022. 1. 15.

자바에서는 데이터베이스로부터 데이터를 가져오거나 입력, 수정, 삭제 등을 할 때 JDBC를 사용한다. 이런 JDBC가 없던 시절에 데이터를 어떻게 다루었는지, JDBC API와 JDBC 드라이버는 무엇인지, 또 이 둘의 차이점과 JDBC 드라이버의 4가지 종류는 무엇인지 알아본다.

 

1. 데이터베이스가 없던 시절(그림1)

그림 1

- 파일 입·출력 API를 사용하여 데이터 입·출력 프로그래밍

검색, 삭제, 변경을 고려한 데이터 구조를 세밀하게 정의하고, 그 구조에 따라 데이터를 읽고 써야하기 때문에 번거롭고 힘들다.

- 애플리케이션의 데이터가 분리되어 통합 조회 어려움

데이터 파일이 애플리케이션 별로 분리되고 격리되어 있기 때문에 서로 관련된 데이터를 하나로 묶어서 처리하려면 매우 복잡해진다.

- 데이터의 중복 발생

예를 들어 같은고객에게 여러번의 주문이 들어오면 주문관리 시스템의 데이터 파일과 고객관리 시스템의 데이터 파일에 같은 정보가 여러 번 저장되기 때문에 저장 공간이 낭비된다. 또한 고객 정보를 변경하게 되면 각각의 데이터 파일에서 해당 고객에 대한 모든 정보를 변경해야 한다. 이 때 변경되지 않는 데이터가 존재하게 되면 데이터의 일관성이 결여되는 문제가 발생된다(데이터 무결성(Data Integrity)이 깨진다). 이렇게 되면 주문한 물품을 배송하거나 고객에게 우편물을 발송할 때 문제가 발생할 수 있다.

- 파일 형식이 애플리케이션 및 프로그래밍 언어에 종속됨

데이터는 각 애플리케이션이 지정한 형식에 따라 쓰고 읽기 때문에 파일형식을 모른다면 그 파일을 생성한 애플리케이션을 통해서만 읽고 쓸 수 있다. 즉 애플리케이션에 종속되는 문제가 발생한다. 또한, 프로그래밍 언어에 따라 데이터를 입·출력하는 형식이 다르다.

 

2. 데이터베이스의 등장(그림 2)

그림 2

- 파일 입·출력 프로그래밍으로부터 자유로움

데이터베이스 관리 시스템(DBMS)의 등장으로 파일 입·출력 API를 사용하여 데이터를 읽고 쓰는 것을 개발자가 아닌 DBMS가 담당하게 되었다. 

- 데이터를 통합하여 관리하므로 관련 데이터의 추출의 쉽고, 중복되지 않음

여러 애플리케이션의 데이터들이 DBMS에서 통합관리 되기 때문에 데이터의 변경, 조회가 쉽고 또 여러 애플리케이션에서 사용하는 데이터들을 조건에 따라 하나로 묶어서 손쉽게 추출이 가능하다.

- 애플리케이션에 종속되지 않고 독립

애플리케이션은 SQL이라는 표준 데이터 질의문을 사용하여 DBMS로부터 데이터를 읽고 쓸 수 있다. 따라서 데이터의 테이블 형식만 알고 있다면 애플리케이션에 상관없이 언제든 데이터에 접근이 가능하고 데이터의 활용이 높아지고 유연해진다.

 

3. 데이터베이스의 사용(그림 3)

그림 3

- DBMS 접속 프로토콜의 비공개

소켓 API를 사용하여 DBMS에 접속하고 싶어도 프로토콜을 몰라 접속이 불가능하다. 프로토콜은 그 자체로 하나의 기술력이기 때문에 쉽개 공개되지 않는다.

- 벤더 API를 통해서만 DBMS에 접속 가능

DBMS 벤더는 DBMS에 접속할 수 있는 API를 만들어 배포하는데 보통 C나 C++로 작성되어 있으며 DBMS 클라이언트와 함께 배포된다. 따라서 API를 사용하려면 DBMS 클라이언트를 설치해야 한다.

- DBMS 전용 애플리케이션의 개발로 비용이 증가

각 DBMS 벤더에서 제공하는 API가 서로 달라서 DBMS마다 별도의 애플리케이션을 개발해야 하므로 개발 및 유지보수에 많은 비용이 든다.

 

4. ODBC로 개발자에게 자유를(그림4)

그림 4

- ODBC API가 제공되어 다양한 DBMS를 손쉽게 지원

ODBC는 특정 DBMS에 종속되지 않고 접근할 수 있도록 마이크로소프트에서 개발한 API다. 대부분의 DBMS는 ODBC API 명세를 구현한 라이브러리를 제공한다. 이렇게 ODBC API 명세에 따라 작성된 함수들, 즉 라이브러리를 'ODBC 드라이버'라 한다. 윈도우 애플리케이션을 위해 만들어졌지만 유닉스, Mac OS X 등의 대부분의 OS를 위한 ODBC 드라이버도 제공된다.

이전엔 DBMS 벤더에서 제공하는 API마다 사용법을 익혀 각 DBMS 특징에 맞추어 프로그래밍해야 했지만, ODBC를 사용하면 추가 프로그래밍 없이 데이터베이스에 접근하여 데이터를 처리 할 수 있다. 물론 접속하려는 DBMS의 ODBC 드라이버가 있어야 한다.

 

5. JDBC Type 1 - ODBC와 연결(그림 5)

그림 5

- JDBC Type 1 드라이버는 ODBC 드라이버와의 연결을 제공

JDBC Type 1 드라이버는 ODBC 드라이버를 거쳐 DBMS에 접속한다. ODBC 드라이버는 보통 DBMS 클라이언트 프로그램을 설치 할 때 함께 배포되기 때문에 애플리케이션을 실행해야 하는 PC에 DBMS 클라이언트를 설치해야 하는 번거로움이 있다.

- JRE에 기본으로 포함되며, Excel이나 Access 파일에 접속할 때 유용

JRE에 기본으로 포함되어 별도의 내려받기가 필요없다. 보통 MS-Excel 파일이나 MS-Access 파일처럼 ODBC 드라이버를 제공하는 파일DB를 읽을 때 주로 사용한다.

- ODBC 드라이버를 거치기 때문에 네 가지 유형의 JDBC 드라이버 중 가장 속도가 느리다.

 

6. JDBC Type2 - DBMS 벤더 API 호출(그림 6)

그림 6

- DBMS 벤더에서 제공하는 API를 사용하므로 DBMS 클라이언트 프로그램의 설치 필요

DBMS 벤더 API를 사용하여 데이터베이스에 접속한다. 따라서 이 드라이버를 사용하여 데이터베이스에 접속하려면 해당 PC에 DBMS 클라이언트 프로그램을 설치해야 한다.

- JDBC Type 2 드라이버는 별도로 내려받아야 함

JDBC Type 2 드라이버는 JRE에서 기본으로 제공하지 않으므로 DBMS를 제공하는 회사나 서드파티(third-party)에서 별도로 내려받아야 한다.

 

7. JDBC Type 3 - 미들웨어 서버를 경유(그림 7)

그림 7

- 미들웨어 서버를 거쳐 DBMS에 접속

서드파티에서 제공하는 미들웨어 서버를 통해 DBMS에 접속한다. 애플리케이션에서 미들웨어 서버에 접속할 때 미들웨어 서버에서 제공하는 JDBC 드라이버를 사용하여 접속한다. 특정 DMBS에 종속 없이 사용할 수 있어 편리하지만 미들웨어 서버에서 DBMS에 접속할 때 일반적인 방법과 같은 방법으로 JDBC Type 1, 2, 4 드라이버를 사용하여 DBMS에 접속한다.

- 미들웨어 서버와 함께 제공되는 JDBC 드라이버를 사용

- ODBC나 벤더 API처럼 C나 C++로 만든 API를 호출하지 않기 때문에 Pure Java라 함

 

8. JDBC Type 4 - DBMS 프로토콜로 직접 연결(그림8)

그림 8

- DBMS 전용 프로토콜을 사용하여 직접 통신

가장 많이 사용되는 방식이다. JDBC Type 4 드라이버는 DBMS 전용 프로토콜을 사용하여 DBMS와 직접 통신하므로 DBMS에 접속하는 PC에 DBMS 클라이언트 프로그램을 설치할 필요가 없다.

- DBMS 벤더에서 제공하는 드라이버를 내려받아야 함

- ODBC나 벤더 API처럼 C나 C++로 만든 API를 호출하지 않기 때문에 Pure Java라 함

→ 자바 애플리케이션은 기본적으로 설치된 JDBC API를 통해 각 DBMS와 통신을 담당하는 클래스인 JDBC 드라이버를 통해 DBMS 전용 프로토콜을 사용하여 DBMS와 직접 통신한다.

 

참고링크 : https://bioinfoblog.tistory.com/entry/Java-%EC%9E%90%EB%B0%94-%EC%96%B4%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98%EC%97%90%EC%84%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4%EC%97%90-%EC%A0%91%EC%86%8D%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95-Java-JDBC-API-JDBC-driver-MySQL

 

[Java] 자바 어플리케이션에서 데이터베이스에 접속하는 방법 (Java, JDBC API, JDBC driver, MySQL)

JDBC API란? 자바 어플리케이션에서도 직접 관계형 DBMS를 제어할 수 있다. 그러한 역할을 돕는 API (Application, Programming Interface, library, 도구)가 JDBC(Java DataBase Connectivity) API이다. 다양한..

bioinfoblog.tistory.com

 

참고도서 : https://freelec.co.kr/book/1674/

 

[열혈강의] 자바 웹 개발 워크북

[열혈강의] 자바 웹 개발 워크북

freelec.co.kr

댓글