우선, JDBC는 자바에서 클라이언트로부터 받은 데이터의 요청(쿼리)를 인터페이스를 통해 표준화된 함수들로 Connection(연결), Statement(쿼리 문장실행), Resultset(결과패치) 등을 제공하는 템플릿이다.
왜 이런 JDBC가 필요하냐면, 사용자가 UI에서 어떤 정보를 클릭하면, 그 쿼리를 실질적인 DBMS(데이터 저장소)에 넘겨 줄 수 있다. 그런데 이 DBMS는 많은 종류가 있다. MySQL, ORACLE, RADIS 등... 이런 dbms의 종류에 함수의 이름이 각각 다를 것이고, 그렇다면, DBMS 를 바꿀때 마다, 그에 맞는 코드를 또 다시 짜야 할 것이다.
이런 애로사항을 방지하기위해 JDBC라는 자바에서 표준적으로 제공하는 라이브러리를 통해 쿼리를 작성하면, 각 DBMS에 맞는 함수들로 자동으로 변화시켜준다.
그런데 오해하지 말아야 할 것이, JDBC는 그냥 깡통이다. 즉, 인터페이스 인 것이다. 실질적으로 각 DBMS에 맞는 코드로 바꾸어 주는 역할은 JDBC Driver 라는 곳에서 수행한다. 이 JDBC Driver은, 각 데이터베이스 별로 따로 다운받아서 설치하면 된다. Jar 형식으로 제공된다.
내가 설명한 부분들을 그림으로 도식화하면 이렇다.
이렇게 사용자가 직접적으로 DB에 쿼리를 날리면, Oracle 따로, MS SQL 따로, 두번 다 각각의 DB함수에 맞게 조정해야한다.
하지만 이렇게 JDBC 템플릿을 한단계 거친 다음 DB에 접근한다면, 굳이 DB의 종류에 상관없이 프로그래밍 할 수 있는 장점이 있다.
또한 JDBC를 통해 DB에 접근하는 과정은 4가지 단계로 분류할 수 있다.
1.JDBC 드라이버를 메모리에 업로드(객체생성)
2.업로드된 JDBC드라이버와 JAVA간의 연결.
3.연결망을 통해, 실제 쿼리를 날릴수 있는 상태 반환.
4.반환된 상태에 SQL을 넣어, 결과셋에 반환.
5.받은 결과셋을 이용하여 결과출력.
이 과정을 자바 코드로 작성해 보겠다.
1.Class.forName("oracle.jdbc.driver.OracleDriver");
2.Connection con = DriverManager.getConnection(...);
3.Statement st= con.createStatement();
4.ResultSet rs= st.executeQuery(sql);
5.rs.next();
그런데, sql을 날려서 결과를 받아오는것이 좀 특이할 것이다. 바로, DB에서는 결과 셋을 따로 만들어놓고 각 셋을 가리키는 포인터(커서)를 둔다. 이를 next()라는 메서드를 활용해서 한 셋씩 프로그램으로 받아오는 것이다.
그림으로 설명하면 이렇다.
원래 연두색 set은 DB의 결과셋에 있는 것인데, rs.next()라는 메서드를 통해 자바로 입력해온 것이다.
공부시간 4시간.
순공부시간 2시간.
오늘은 집중이 잘 된것 같다. 그날 공부한 내용을 머리속에서 복기하면서 백지상태에 설명하는 식으로 정리하는 공부방법이 매우 기억력과 효율을 높여주는것 같다.
'기록 > JDBC' 카테고리의 다른 글
CRUD 서비스 만들기 3.(페이징쿼리 적용부터~). 2021-09-01 (1) | 2021.09.01 |
---|---|
CRUD 서비스 만들기 2(Select 문으로 레코드 리스트 형태로 가져오기). 2021-08-31 (0) | 2021.08.31 |
JDBC UPDATE ,DELETE 쿼리의 적용+ PreparedStatement 클래스.+ CRUD 서비스 만들기1. 2021-08-30 (0) | 2021.08.30 |
JDBC에서 레코드 가져오기, insert문으로 레코드 입력하기 + 트리거 개념+ 시퀀스 개념.+ statement 클래스의 DML에 따른 함수들. 2021-08-27 (0) | 2021.08.27 |
JDBC Driver설치. JDBC 기본코드와 동작원리.2021-08-25 (0) | 2021.08.25 |