2021. 10. 28. 01:16ㆍDatabase
Data의 기록 및 저장
DataBase의 등장은 종이나 문서에 기록하기 시작한 이래 1960년대부터 1세대 파일 시스템을 시작으로 처음으로 전산화된 기록물이 사용되기 시작했다.
이후 세대를 거치며 4세대에는 관계형 데이터베이스(RDBMS)라고 불리는 제품들이 출시되기 시작했고 1979년 릴레이셔널 소프트웨어(현 오라클)에서 최초로 상용화하였다.
이처럼 DataBase는 데이터의 기록 및 저장이라는 명목 아래 오랜 역사를 가지고 있다.
JDBC의 등장 배경
인터넷이 보급되기 시작한 1990년대 이후부터 Database의 산업이 온라인 비즈니스와 연관되어 범용적으로 성장이 되고 있었는데 이 때문에 온라인 DataBase 연결에 대한 수요가 생겨나기 시작하였다.
기존 DBMS들은 각각의 제품들 별로 서로 다른 DB 연결방식을 제공하였는데, 1997년 JAVA에서는 모든 DBMS에 대해서 공통적으로 사용 가능한 표준 인터페이스 JDBC(Java DataBase Connectivity)를 발표하게 된다.
이후 각 제품의 벤더 사들로 하여금 해당 표준 인터페이스를 통해 구현하게 하였으며 각 벤더 사들은 JDBC Driver를 제공하여 공통된 JDBC 표준 인터페이스를 통한 DB 연결 및 제어가 이뤄지게 된다.
JDBC의 구조
JDBC란 JDBC API(표준 인터페이스)와 JDBC Driver(제품별 구현 Class)로 이뤄져 있다.
애플리케이션이 동작할 때 JDBC API(표준 인터페이스)를 통해 SQL을 작성하게 되면 각 벤더사의 JDCB Driver를 통해 처리되고 해당 결과를 전달받아 볼 수 있게 된다.
즉, JDBC의 등장 배경에서도 설명하였지만 JDBC는 애플리케이션과 DataBase 제품들 사이의 Bridge(연결) 역할을 담당한다.
JDBC Driver Class 및 URL
Vender | Driver Class | JDBC URL |
Oracle | oracle.jdbc.driver.OracleDriver | jdbc:oracle:thin@[HOST]:[PORT]:[SID] |
MySQL | com.mysql.jdbc.Driver | jdbc:mysql://[HOST][:PORT]/[DBNAME[?param=value&m1=value2&..]] |
DB2 | com.ibm.db2.jcc.DB2Driver | jdbc:db2://[HOST]:[PORT]/[DBNAME] |
SQL Server | com.microsoft.sql.jdbc.SQLServer Driver | jdbc:sqlserver://[serverName[\instanceName][:portNumber]] |
JDBC API 표준 Interface 동작방식
1. JDBC Driver Loading
위에서 나열한 벤더사에서 제공한 JDBC Driver Class Loading한다.
//1. JDBC 드라이버 로딩
Class.forName("oracle.jdbc.driver.OracleDriver"); //ex) Oracle Driver Loading
2. DriverManager를 통한 DB Connection Interface 생성
DriverManager에 각 벤더사의 형식에 맞는 JDBC의 접속 URL 정보 및 ID, PW정보를 입력 Connection 정보를 취득한다.
// 2.DriverManager를 통한 Connection 생성
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:test", "scott", "tiger");
3. Connection Interface를 통한 Statement Interface 생성
연결이 성공하면 Connection 객체를 통해 Statement 객체를 생성하여 DB에 Query 를 통해 SQL을 작성한다.
//3.Statement 객체를 통한 SQL 작성
Statement stmt = conn.createStatment("Select * from dual");
4. Statement Interface 를 통한 ResultSet Interface 생성
Statement Interface 를 통해 생성된 각 벤더사에 맞는 Qeury가 생성되면 해당 SQL 질의를 전송하여 결과를 받아온다.
//4.SQL 질의 전송 후 ResultSet 객체를 통한 SQL결과 확인
ResultSet rs = stmt.executerQuery();
위 방식을통해 각벤더사의 Driver Class 및 JDBC URL변경만으로 각 제품으로의 접근이 가능하다.
[참고] JDBC Driver 종류
종류는 크게 4가지로 분류되며 각 타입에 따라서 JDBC Driver 구현 방법이 다르며 성능에 차이를 보이게 되는데 상위 타입일수록 성능이 증가한다고 생각하면 된다.
참고로 Oracle Thin Driver는 Type 4에 해당한다.
Type 1 : JDBC-ODBC Bridge Driver
Type 2 : Native_API/partly Java Driver
Type 3 : Net-protocol/all-Java Driver
Type 4 : Native-protocol/all-Java Driver
각 종류별 특성을 좀 더 알아보려면 해당 블로그에 잘 정리되어 있으니 참고하면 될 것 같다(링크)
'Database' 카테고리의 다른 글
[Database] 관계형 데이터베이스 & NoSQL 데이터 베이스 (0) | 2021.10.26 |
---|