본문 바로가기
BackEnd/Database

[DB] JDBC 개념

by ryuneng 2025. 1. 19.
반응형

# 목적

: JDBC에 대한 기초 개념 정리



JDBC 란?

- Java DataBase Connectivity
- 자바가 데이터베이스에 접속해서 SQL을 실행할 수 있도록 하는 표준
- java.sql 패키지와 javax.sql 패키지에 관련 인터페이스와 클래스가 존재함



JDBC API의 주요 객체

1. Connection 인터페이스

: 데이터베이스와의 연결을 담당하는 객체

2. PreparedStatement 인터페이스

: SQL의 전송과 실행을 담당하는 객체

3. ResultSet 인터페이스

: 조회결과를 포함하고 있는 객체




Java의 데이터베이스 액세스 절차

  1. 오라클 jdbc driver를 로딩해서 드라이버 레지스트리에 등록시킨다.
  2. 드라이버 레지스트리에 등록된 오라클 jdbc driver를 이용해서
    오라클 데이터베이스와 연결을 담당하는 Connection 객체를 획득한다.
  3. Connection 객체의 메소드를 실행해서 SQL을 데이터베이스로 전송하고
    실행시키는 PreparedStatement 객체를 획득한다.
  4. PreparedStatement 객체의 executeUpdate() 메소드를 실행해서
    SQL을 데이터베이스로 보내 실행시키고 결과값을 받는다.
  5. 데이터베이스 액세스 작업에 사용했던 모든 자원을 반납한다.

- 절차 예시)

// 1. jdbc driver를 드라이버 레지스트리에 등록시키기
//  * Class.forName("클래스 전체 경로") : 지정된 클래스를 메모리에 로딩함
Class.forName("oracle.jdbc.OracleDriver");
		
// 2. Connection 객체 획득하기
String url = "jdbc:oracle:thin:@localhost:1521:xe"; // 오라클의 jdbc url(DBMS마다 jdbc url은 상이함)
String username = "사용자이름";
String password = "비밀번호";
Connection connection = DriverManager.getConnection(url, username, password);
System.out.println(connection);
		
// 3. PreparedStatement 객체 획득하기
// 참고) """ ...~~ """; : 텍스트블록, jdk15부터 지원
String sql = """
		INSERT INTO SAMPLE_BOOKS
		(BOOK_NO, BOOK_TITLE, BOOK_WRITER, BOOK_PRICE, BOOK_STOCK)
		VALUES
		(?,?,?,?,?)
""";
// String sql을 SqlDeveloper에게 전송하고 실행할 수 있는 변수 pstmt 선언
PreparedStatement pstmt = connection.prepareStatement(sql);
// sql의 ? 에 바인딩할 값을 순서대로 설정
pstmt.setInt(1, 10);
pstmt.setString(2, "자바의 정석");
pstmt.setString(3, "남궁성");
pstmt.setInt(4, 35000);
pstmt.setInt(5, 20);
		
// 4. SQL을 서버로 전송하고 실행시키기
int rowCount = pstmt.executeUpdate();
System.out.println(rowCount + "개의 행이 추가되었습니다.");
		
// 5. 사용했던 자원 반납하기
pstmt.close();
connection.close();




* 객체 디자인 패턴

VO(Value Object)

- 데이터(정보)를 표현하는 객체
- 보통은 특정 테이블의 한 행을 표현
- 테이블 당 하나의 VO 클래스가 필요함

DAO(Data Access Object)

- 데이터베이스 액세스를 담당하는 객체
- 보통은 특정 테이블마다 하나의 DAO 클래스가 필요
- DAO 클래스에는 특정 테이블에 대한 CRUD(추가, 조회, 변경, 삭제) 작업이 구현되어 있음

 


< 해당 글은 velog에서 이전하며 옮겨온 글로, 가독성이 좋지 않을 수 있는 점 양해 부탁드립니다. >

🔗 velog 버전 보기 : https://velog.io/@ryuneng2/DB-JDBC