본문 바로가기

DB/JDBC

JDBC :: 자바를 통해서 데이터베이스 연결 사용

 

JDBC : Java DataBase Connectivity

Java 기반 애플리케이션의 데이터를 데이터베이스에 저장 및 업데이트하거나, 데이터베이스에 저장된 데이터를 Java에서 사용할 수 있도록 하는 자바 API이다.

 

 

JDBC 표준 인터페이스

 

 

JDBC의 동작 흐름

 

 

JDBC API 사용 흐름

단계 설명 예외
1단계
DriverLoading
Class.forName("") : Oracle을 연결하기 위한 class 파일을 로드 ClassNotFoundException
2단계
Connection 연결
java.sql.Connection > DriverManager

java.sql.Connection conn = DriverManager.getConnection(url, username, password)

url - jdbc:oracle:thin@주소:포트:서비스명
ex) jdbc:oracle:thin:@localhost:1521:xe
username : EDU
password : EDU
SQLException
3단계
쿼리준비
java.sql.Statement > java.sql.PreparedStatement
(create 사용시 하드 부하가 심하다)

'?'로 값을 바인딩한다
java.sql.preparedStatement = conn.prepareStatement(sql문)
ex) String sql = "SELECT EMPNO FROM EMP WHERE EMPNO = ?"
stmt.setInt(7900);
SQLException
4단계
쿼리 실행
쿼리가 준비됨 임시영역인 (PreparedStatement)를 실행
SELECT : stmt.executeQuery() -> java.sql.ResultSet
INSERT : stmt.executeUpdate() -> 성공한 row의 갯수를 반환
DELETE :   "
UPDATE :   "
SQLException
5단계
결과 값 받기
4단계 실행을 했을 경우 SELECT 쿼리만이 결과를 반환
java.sql.ResultSet -> Iterator 패턴으로 값을 출력
SQLException
6단계
닫기
Stream 객체는 반드시 닫아 줘야 한다
java.sql.ResultSet -> java.sql.Statement -> java.sql.Connection 열었던 역순서대로 닫아준다
SQLException

 

 

 

쉽게 이해하기

 

1. 실제 구동 코드는 Driver가 가지고 있다.
2. JDBC는 그저 연결 API일뿐 쿼리를 다루는 기능이 없다.
3. 그러므로 DB 사용을 위해 Driver 로드해야만 한다.
4. 드라이버 로드 : 드라이버를 객체화하는 것
      - new 연산자 사용이 아니라 Class.forName을 통해 객체를 생성 >> 메모리가 잡힘
5. 드라이버 매니저를 통해 연결 객체를 얻고 Connection conn
6. 이후 이를 토대로 실행도구 생성 Statement stmt
7.결과 실행 (쿼리 수정등) ResultSet rs

- conn, stmt, rs 모두 객체 생성이지만 new 연산자를 사용하지 않는다.
- 반드시 이 순서대로 그대로 해야한다.
- Driver를 통해서 conn을 만들고 conn을 통해서 st를 만들고 st를 통해서 rs를 만드는 순차적인 생성이기 때문
- ResultSet 객체가 만들어졌다는 것은 결과를 받아오는게 아니라 결과를 이용할 수 있는 상태가 되었다는 것

 

'DB > JDBC' 카테고리의 다른 글

JDBC :: Statement / PreparedStatement / '?'  (0) 2024.05.01
JDBC :: Oracle Driver 의존성 주입 코드  (0) 2024.05.01
JDBC :: Driver / DTO / DAO  (0) 2024.05.01