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

- 파일 입·출력 API를 사용하여 데이터 입·출력 프로그래밍
검색, 삭제, 변경을 고려한 데이터 구조를 세밀하게 정의하고, 그 구조에 따라 데이터를 읽고 써야하기 때문에 번거롭고 힘들다.
- 애플리케이션의 데이터가 분리되어 통합 조회 어려움
데이터 파일이 애플리케이션 별로 분리되고 격리되어 있기 때문에 서로 관련된 데이터를 하나로 묶어서 처리하려면 매우 복잡해진다.
- 데이터의 중복 발생
예를 들어 같은고객에게 여러번의 주문이 들어오면 주문관리 시스템의 데이터 파일과 고객관리 시스템의 데이터 파일에 같은 정보가 여러 번 저장되기 때문에 저장 공간이 낭비된다. 또한 고객 정보를 변경하게 되면 각각의 데이터 파일에서 해당 고객에 대한 모든 정보를 변경해야 한다. 이 때 변경되지 않는 데이터가 존재하게 되면 데이터의 일관성이 결여되는 문제가 발생된다(데이터 무결성(Data Integrity)이 깨진다). 이렇게 되면 주문한 물품을 배송하거나 고객에게 우편물을 발송할 때 문제가 발생할 수 있다.
- 파일 형식이 애플리케이션 및 프로그래밍 언어에 종속됨
데이터는 각 애플리케이션이 지정한 형식에 따라 쓰고 읽기 때문에 파일형식을 모른다면 그 파일을 생성한 애플리케이션을 통해서만 읽고 쓸 수 있다. 즉 애플리케이션에 종속되는 문제가 발생한다. 또한, 프로그래밍 언어에 따라 데이터를 입·출력하는 형식이 다르다.
2. 데이터베이스의 등장(그림 2)

- 파일 입·출력 프로그래밍으로부터 자유로움
데이터베이스 관리 시스템(DBMS)의 등장으로 파일 입·출력 API를 사용하여 데이터를 읽고 쓰는 것을 개발자가 아닌 DBMS가 담당하게 되었다.
- 데이터를 통합하여 관리하므로 관련 데이터의 추출의 쉽고, 중복되지 않음
여러 애플리케이션의 데이터들이 DBMS에서 통합관리 되기 때문에 데이터의 변경, 조회가 쉽고 또 여러 애플리케이션에서 사용하는 데이터들을 조건에 따라 하나로 묶어서 손쉽게 추출이 가능하다.
- 애플리케이션에 종속되지 않고 독립
애플리케이션은 SQL이라는 표준 데이터 질의문을 사용하여 DBMS로부터 데이터를 읽고 쓸 수 있다. 따라서 데이터의 테이블 형식만 알고 있다면 애플리케이션에 상관없이 언제든 데이터에 접근이 가능하고 데이터의 활용이 높아지고 유연해진다.
3. 데이터베이스의 사용(그림 3)

- DBMS 접속 프로토콜의 비공개
소켓 API를 사용하여 DBMS에 접속하고 싶어도 프로토콜을 몰라 접속이 불가능하다. 프로토콜은 그 자체로 하나의 기술력이기 때문에 쉽개 공개되지 않는다.
- 벤더 API를 통해서만 DBMS에 접속 가능
DBMS 벤더는 DBMS에 접속할 수 있는 API를 만들어 배포하는데 보통 C나 C++로 작성되어 있으며 DBMS 클라이언트와 함께 배포된다. 따라서 API를 사용하려면 DBMS 클라이언트를 설치해야 한다.
- DBMS 전용 애플리케이션의 개발로 비용이 증가
각 DBMS 벤더에서 제공하는 API가 서로 달라서 DBMS마다 별도의 애플리케이션을 개발해야 하므로 개발 및 유지보수에 많은 비용이 든다.
4. ODBC로 개발자에게 자유를(그림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)

- 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)

- DBMS 벤더에서 제공하는 API를 사용하므로 DBMS 클라이언트 프로그램의 설치 필요
DBMS 벤더 API를 사용하여 데이터베이스에 접속한다. 따라서 이 드라이버를 사용하여 데이터베이스에 접속하려면 해당 PC에 DBMS 클라이언트 프로그램을 설치해야 한다.
- JDBC Type 2 드라이버는 별도로 내려받아야 함
JDBC Type 2 드라이버는 JRE에서 기본으로 제공하지 않으므로 DBMS를 제공하는 회사나 서드파티(third-party)에서 별도로 내려받아야 한다.
7. JDBC Type 3 - 미들웨어 서버를 경유(그림 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)

- DBMS 전용 프로토콜을 사용하여 직접 통신
가장 많이 사용되는 방식이다. JDBC Type 4 드라이버는 DBMS 전용 프로토콜을 사용하여 DBMS와 직접 통신하므로 DBMS에 접속하는 PC에 DBMS 클라이언트 프로그램을 설치할 필요가 없다.
- DBMS 벤더에서 제공하는 드라이버를 내려받아야 함
- ODBC나 벤더 API처럼 C나 C++로 만든 API를 호출하지 않기 때문에 Pure Java라 함
→ 자바 애플리케이션은 기본적으로 설치된 JDBC API를 통해 각 DBMS와 통신을 담당하는 클래스인 JDBC 드라이버를 통해 DBMS 전용 프로토콜을 사용하여 DBMS와 직접 통신한다.
[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
'교재 실습 > 자바 웹 개발 워크북' 카테고리의 다른 글
23. 데이터베이스에서 데이터 가져오기 (2) (0) | 2022.01.18 |
---|---|
22. 데이터베이스에서 데이터 가져오기 (1) (0) | 2022.01.17 |
20. GenericServlet의 사용 (2) (0) | 2022.01.14 |
19. GenericServlet의 사용 (1) (0) | 2022.01.13 |
18. 웹 애플리케이션 배치 (2) (0) | 2022.01.12 |
댓글