DAO : Data Access Object
- 데이터 베이스 관련 작업을 전담하는 클래스
- 데이터 베이스에 연결하여 입력, 수정, 삭제, 조회 등의 작업을 하는 클래스
- CRUD 작업
- CREATE (INSERT)
- READ (SELECT)
- UPDATE
- DELETE
DAO 작성
DAO는 JDBC(Java Data Base Connection)를 이용해서 자바와 데이터 베이스를 연결한다. JDBC는 자바에서 데이터 베이스를 사용하기 위한 절차에 대한 규약이다. 사용하는 DBMS를 자바에 연결하여 사용하기 위해 해당 DBMS의 드라이버를 설치해서 DB에 접근할 수 있다.
dao를 작성하기 이전에 자바와 오라클(DBMS)간의 연동
- JAR 파일 라이브러리에 추가하기
프로젝트 우클릭 - Properties - Java Build Path - Libraries - Add External JARs
오라클을 설치한 경로로 들어가보면 oracle - product - 11.2.0 - server - jdbc - lib
에 jar 파일이 있다.
ojdbc5.jar파일은 jdk 1.5 버전용이고, ojdbc6.jar 파일은 jdk 1.6 이상 버전용이다.
Apply 해보면 Referenced Libraries
에 jar파일이 추가된 것을 확인할 수 있다.
1. Driver 연결
Class.forName("oracle.jdbc.driver.OracleDriver");
오라클에서 제공하는 Driver 클래스를 연결해준다.
2. 계정연결
Connection con = null;
String url = "jdbc:oracle:thin:@localhost:1521:xe";
String user = "계정";
String password = "비밀번호";
con = DriverManager.getConnection(url, user, password);
Connection 객체를 생성하여 데이터 베이스에 연결하기 위한 커넥션 정보를 전달한다. (url, user, password)
3. query 준비
이제 SQL 질의문을 사용하기 위해 Statement 혹은 PreparedStatement를 사용하여 작성한다.
Statement stmt = null;
String sql = "SQL질의문";
stmt = con.prepareStatement(sql); // 여기서 con은 Connection 객체
4. 실행 및 리턴
SQL 질의문에 대한 반환 값을 받는 ResultSet을 선언한다.
SELECT문은 .executeQuery();
를 사용해서 선택된 테이블을 ResultSet으로 리턴
INSERT, UPDATE, DELETE문은 .executeUpdate();
를 사용해서 ROW의 개수를 리턴한다.
ResultSet rs = null;
rs = stmt.executeQuery(); // SELECT
rs = stmt.executeUpdate(); // INSERT, UPDATE, DELETE
5. 종료
가장 마지막에 열어준 것부터 닫아준다.
rs.close();
stmt.close();
pstm.close();
con.close();
DAO 클래스 예제
package com.test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class MyTest {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
// 1. driver 연결 (ojdbc6.jar)
Class.forName("oracle.jdbc.driver.OracleDriver");
// 2. 계정 연결
String url = "jdbc:oracle:thin:@localhost:1521:xe";
String user = "hr";
String password = "hr";
Connection con = DriverManager.getConnection(url, user, password);
// 3. sql 구문 (query 준비)
String sql = " SELECT * FROM employees ";
Statement stmt = con.createStatement();
// 4. 전달 및 리턴
// db에 query 전달 - 테이블을 resultset에 담아서 리턴
ResultSet rs = stmt.executeQuery(sql);
// 담겨진 값을 하나하나 가져오기
//rs.next : row단위로 가져옴
while (rs.next()) {
System.out.println(
rs.getInt(1) + " "
+ rs.getString(2) + " "
+ rs.getString(3));
}
// 5. 종료 : 가장 마지막에 열어준 것부터 닫아주기
rs.close();
stmt.close();
con.close();
}
}
댓글