1. 드라이버 로딩
Class.forName();- Oracle Driver 를 JAVA 에서 사용하기 위해 드라이버를 JVM 에 로딩하는 과정 => 사용할 드라이브를 확인하는 작업
2. 커넥션 할당받기
DriverManager.getConnection();=> 수레가 지나다닐 선로(줄) 작업을 하는 것
3. 쿼리문 전송을 위한 작업 객체 할당받기
- Statement 또는 PreparedStatement 할당받기
conn.createStatement();또는conn.preparedStatement();=> 커넥션을 기반으로 수레를 매다는 작업을 수행함 / 다른작업객체
💡 Connection 은 줄, Statement 는 수레에 비유할 수 있음
4. 작업 객체를 활용하여 쿼리문 전송
DML(insert, update, delete)문인 경우
int updateCount = stmt.executeUpdate(sql);- 영향받은 레코드 수(적용된 행의 갯수) 반환
select 문인 경우
ResultSet rs = stmt.executeQuery(sql);- 결과 집합 형태로 ResultSet 반환 (다중일수도 단일컬럼일수도 있으므로, 일괄적으로 ResultSet 형태로 보냄. 긴 필름형태로 되어있음)
→ 선택적으로 executeUpdate(오라클에 전달하고보니 DB상에서 변화가 있을 때) 메소드, executeQuery(DB의 변화가 없을 때) 메소드를 사용
⚠️ executeQuery() 메소드를 사용하면 질의 결과를 ResultSet 객체로 가져올 수 있지만, ResultSet 객체가 질의에 대한 결과물 모두를 한꺼번에 갖고 있는 구조는 아님. 단지 데이터베이스로부터 획득한 질의 결과물에 대한 관리가 가능한 상태가 되는 것이므로, ResultSet 을 얻었다고 해서 데이터베이스와의 연결을 끊게 되면 ResultSet 객체는 더 이상 질의 결과를 관리할 수 없게 됨을 주의 ==> 필요한 것들을 변수에 담는 등 다 꺼내서 사용했을 때 연결을 끊기
5. (select 구문의 경우만)
- ResultSet 의 논리적 커서 이동을 통해 각 컬럼의 데이터를 바인딩해 온다.
boolean b = rs.next();- 커서 이동. 커서가 위치한 지점에 레코드가 존재하면 true 를 반환, 없으면 false 를 반환. 커서는 가장 선두 첫 번째 레코드의 직전에 위치하고 있다가 『next()』 가 호출되면 진행
6. 사용을 마친 리소스 반납
rs.close();→ ResultSet 사용했을 경우stmt.close();→ Statement 사용했을 경우DBConn.close();→ null 체크하여 close() 해 주는 것을 권장. finally 블럭에서 구현하는 것을 권장
'Java' 카테고리의 다른 글
| [JAVA] Chapter 12. Statement / PreparedStatement (0) | 2023.12.08 |
|---|---|
| [JAVA] Chapter 11. 데이터베이스 연결 클래스(DBConn.java) (0) | 2023.12.07 |
| [JAVA] Chapter 9. JDBC 개념 (0) | 2023.12.05 |
| [JAVA] Chapter 7. 추상클래스와 인터페이스 (0) | 2023.11.07 |
| [JAVA] Chapter 6. 상속 (0) | 2023.11.07 |