본문 바로가기
Language/Java

[Java] DAO 작성/ 예제

Writer mintparc 2019. 11. 27.

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();

	}

}

댓글