💙 들어가며
SQL과 JDBC를 활용해서 데이터베이스를 이용한 여러 작업을 해보자.
✏️ 학습내용 정리
#JDBC API란?
데이터베이스를 이용하려면 기본적으로 3가지 작업(연결/인증, 문장실행, 결과패치)을 할 수 있어야 한다.
그런데 기능은 동일한데 DBMS마다 사용하는 툴이 다른 것에 대해 문제가 생겼다.
즉, 우리가 작성한 SQL을 코드로 전달하려면 결국 API가 필요하게 되는데, 그 API는 각각의 DBMS 플랫폼에서 제공하기 때문에 플랫폼마다 API가 다르다는 문제가 발생하게 되었다.
그리고 자바에서는 이것을 단일화 시키려는 노력을 하였다. (언제나 자바는 WORA!)
마치 JVM를 사용하면 어느 운영체제에서나 코드 수정없이 동일한 코드를 동작시킬 수 있는 것처럼 JDBC를 사용하면 플랫폼에 종속되지 않고 JDBC를 통해서 쿼리를 실행할 수 있게 된 것이다.
자바의 이런 노력덕분에 우리는 플랫폼이 제공하는 API를 직접적으로 사용하지 않고, 간접적으로 이용할 수 있게 되어서, 구동코드를 가지고 있는 녀석(Driver)만 그때그때 갈아 끼면 플랫폼에 따라 다른 API를 사용할 때마다 코드를 수정할 필요가 없어졌다. (자바 짱!)
위에서 했던 말을 다시 해석해보면 각각의 플랫폼을 위한 드라이버는 따로 구해올 필요가 있다는 뜻이 되겠다.
실습을 위해서 Oracle용 JDBC Driver를 설치해보자.
(앞으로는 라이브러리를 사용할 것이기 때문에 이 드라이버를 직접 사용할 일은 많이 없겠지만 그래도 라이브러리 안에 이 내용이 다 구현되어 있기 때문에 개념적인 것에 대한 이해는 중요하다.)
#자바에서 다운받은 JDBC Driver 추가하기
다운로드 받은 JDBC Driver를 실행시키려면 일종의 꼬리물기와 같은 방식이 필요하다.
먼저 다운로드 받은 .jar파일을 class path에 등록시켜야 하는데, 아래의 경로로 import 시키면 된다.
먼저 작업하려는 프로젝트에서 우클릭해서 Build Path ▶ Configure Build path한다.
그리고 Libraries에서 Classpath를 클릭하고 Add External JARs...를 클릭해서 다운로드 받은 .jar파일을 선택해주면 끝!
#JDBC 기본코드의 이해
그리고 이클립스에서 클래스 파일을 불러오면 되는데, 이때 경로를 문자열로 나타낸 것을 가지고 클래스를 객체화 할 수 있다. 그리고 드라이버에 연결을 시키면 connection 객체가 생성되고, connection 객체를 통해서 Statement 객체를 만들고 Satement 객체를 통해서 문장을 실행하는 식의 꼬리물기를 하면 된다.
이렇게 얻은 ResultSet(결과집합)을 이용해서 데이터를 불러올 수 있게 되는데, 이때 가져올 데이터가 존재하는지에 대한 여부는 rs.next()라는 함수를 이용해서 확인하게 된다.
rs.next()를 하면 데이터가 시작하기 이전인 BoF(Before of File)에서 시작해서 행 단위로 커서를 한칸씩 내리면서 데이터를 가져오고 true값을 반환한다. 즉, 2가지 작업을 하는 것이다. 데이터도 가져오고, true값도 반환!
계속 커서가 내려오다가 EoF(End of File)를 만나면 false값을 반환한다.
더 이상 가져올 값이 없으면 false가 되는 것이니 조건문의 T/F를 반환하는 녀석으로 활용하면 된다.
💙 마치며
1.
JDBC Driver를 이용하는 순서에 대해서 잘 익혀두자.
💡 JDBC Driver 구동순서
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con = DriverManager.getConnection(url주소**, 아이디, 비밀번호);
Statement st = con.createStatement();
ResultSet rs = st.executeQuery(sql문장);
**url주소:
"jdbc:oracle:thin:@도메인명:포트번호/pdb이름"
'SQL' 카테고리의 다른 글
[뉴렉처 6기] Oracle SQL│DISTINCT│ROWNUM│SUB쿼리 (2) | 2023.08.20 |
---|---|
[뉴렉처 6기] Oracle SQL│SELECT문의 작성순서와 실행순서│집계함수 (0) | 2023.08.20 |
[뉴렉처 6기] Oracle SQL│열을 합치는 JOIN│데이터를 합치는 UNION (0) | 2023.08.20 |
[뉴렉처 6기] Oracle SQL│연산자│패턴연산│정규식│(230810) (0) | 2023.08.16 |
[뉴렉처 6기] Oracle SQL│Database│SQL│DBMS│SQL DEVELOPER 설치(230807) (0) | 2023.08.16 |