[JDBC] 뉴렉처 JDBC 강의 내용 정리

Suhyeon Lee·2023년 3월 5일
0

본 내용은 뉴렉처 님의 자바 JDBC 프로그래밍 강의를 참고하여 작성하였습니다.

01. JDBC란 무엇인가?

JDBC (Java Database Connectivity)

JDBC는 각 DBMS의 차이를 단일화 시켜준다. 따라서 개발자는 다른 DBMS에 접근하기 위해 코드를 바꿀 필요가 없다. JDBC를 이용하기 위해서는 실제 구동 코드를 가지고 있는 JDBC Driver가 필요하다.

JDBC 수행 순서

  1. 드라이버 로드하기
  2. 연결 생성하기
  3. 문장 실행하기
  4. 결과집합 사용하기

02. DBMS와 JDBC Driver 준비하기

  1. Oracle DBMS 설치
  2. Oracle JDBC Driver 다운로드
  3. Driver 설정
    이클립스에서 새로운 프로젝트 생성 > 프로젝트 마우스 우클릭 > Build Path > Configure Build Path > Libraries > Add External JARs > JDBC Driver (ojdbc8.jar) 추가 > Apply

03. JDBC 기본 코드의 이해

  1. 드라이버 로드
    OracleDriver 클래스를 객체화. 메모리상에 드라이버가 올라간다.
Class.forName("oracle.jdbc.driver.OracleDriver");
  1. 연결 객체 얻기
Connection con = DriverManager.getConnection(...);
  1. 실행도구 생성
Statement st = con.createStatement();
  1. 쿼리 실행 후 결과 집합 반환
ResultSet rs = st.executeQuery(sql);

쿼리를 실행하면 서버에 결과 집합이 만들어지는데, 서버는 결과 집합을 사용자에게 한번에 다 돌려주는 것이 아니다. 커서가 Before of File > End of File 까지 순차적으로 이동하며 레코드 단위로 결과를 반환한다.
ResultSet은 사용자에게 전달된 레코드를 담는 그릇이다.

  1. 다음 레코드를 패치
rs.next();
  1. 컬럼을 문자열로 받기
String title = rs.getString("title");

04. 쿼리 실행하기 실습

Program.java

package ex1;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Program {

	public static void main(String[] args) throws ClassNotFoundException, SQLException {
		
		String url = "jdbc:oracle:thin:@localhost:1521/xepdb1";
		String sql = "SELECT * FROM NOTICE"";
		
		Class.forName("oracle.jdbc.driver.OracleDriver");
		Connection con = DriverManager.getConnection(url, "NEWLEC", "****");
		Statement st = con.createStatement();
		ResultSet rs = st.executeQuery(sql);
		
		if(rs.next()) {
			String title = rs.getString("TITLE"); //컬럼명은 대소문자 구분X
			System.out.println(title);			
		}
		
        //역순으로 닫기
		rs.close();
		st.close();
		con.close();
	}
}

05. 연습문제1

각 컬럼이 갖고 있는 형식에 맞게 값을 가져오고 반복문을 이용하여 모든 레코드가 출력되도록 작성하라.

if(rs.next()){
    int id = rs.?("ID");
    String title = rs.?("TITLE");
    String writerId = rs.?("WRITER_ID");
    Date regDate = rs.?("REGDATE");
    String content = rs.?("CONTENT");
    int hit = rs.?("hit");

	System.out.printf("id:%d, title:%s, writerId:%s, regDate:%s, content:%s, hit:%d\n", 
    					id, title, writerId, regDate, content, hit);
}

풀이

while(rs.next()){
    int id = rs.getInt("ID");
    String title = rs.getString("TITLE");
    String writerId = rs.getString("WRITER_ID");
    Date regDate = rs.getDate("REGDATE");
    String content = rs.getString("CONTENT");
    int hit = rs.getInt("hit");

	System.out.printf("id:%d, title:%s, writerId:%s, regDate:%s, content:%s, hit:%d\n", 
    					id, title, writerId, regDate, content, hit);
}

06. 연습문제2

위의 연습문제 1을 조회수가 10 이상인 게시글만 출력되도록 수정하라.

풀이

출력하기 전에 조건문을 사용하는 방법과 SELECT문에서 WHERE절을 사용하는 방법이 있다. 사용자가 볼 때 두 방법의 결과는 같다. 그러나 전자의 경우와 같이 모든 데이터를 가져와서 데이터의 수만큼 반복시킬 필요는 없다. 따라서 SQL문을 이용하여 필요한 데이터만 필터링해 가져오는 것이 더 효율적이다.

07. SQL을 잘해야 하는 이유

데이터 필터링, 정렬, 그룹화 등의 모든 데이터 연산은 데이터베이스에서 처리한다. 자바는 UI 레이아웃만, 데이터 가공처리는 SQL이 담당해야 한다.

0개의 댓글