반응형
# 목적
: JDBC에 대한 기초 개념 정리
JDBC 란?
- Java DataBase Connectivity
- 자바가 데이터베이스에 접속해서 SQL을 실행할 수 있도록 하는 표준
- java.sql 패키지와 javax.sql 패키지에 관련 인터페이스와 클래스가 존재함
JDBC API의 주요 객체
1. Connection 인터페이스
: 데이터베이스와의 연결을 담당하는 객체
2. PreparedStatement 인터페이스
: SQL의 전송과 실행을 담당하는 객체
3. ResultSet 인터페이스
: 조회결과를 포함하고 있는 객체
Java의 데이터베이스 액세스 절차
- 오라클 jdbc driver를 로딩해서 드라이버 레지스트리에 등록시킨다.
- 드라이버 레지스트리에 등록된 오라클 jdbc driver를 이용해서
오라클 데이터베이스와 연결을 담당하는 Connection 객체를 획득한다. - Connection 객체의 메소드를 실행해서 SQL을 데이터베이스로 전송하고
실행시키는 PreparedStatement 객체를 획득한다. - PreparedStatement 객체의 executeUpdate() 메소드를 실행해서
SQL을 데이터베이스로 보내 실행시키고 결과값을 받는다. - 데이터베이스 액세스 작업에 사용했던 모든 자원을 반납한다.
- 절차 예시)
// 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
'BackEnd > Database' 카테고리의 다른 글
[DB] Oracle의 내장함수 - 그룹함수(다중행 함수)와 GROUP BY(그룹화) (0) | 2025.01.20 |
---|---|
[DB] Oracle의 내장함수 - 단일행 함수 (0) | 2025.01.20 |
[DB] Oracle의 데이터 타입 (0) | 2025.01.20 |
[DB] SQL의 CRUD 구현 쿼리 (Feat. DML) (0) | 2025.01.20 |
[DB] 데이터베이스 기초 용어 정리 - DBMS, SQL, 관계형 데이터베이스 (0) | 2025.01.19 |