본문 바로가기
컴퓨터과학/디자인패턴

[디자인패턴] DAO 패턴

by 윤호 2021. 12. 4.

목적

업무와 DBMS를 분리하기 위해 사용

요소

문제 : DB를 사용하는 방법이 변경되면 클라이언트의 수정이 많아짐

해결 : 사용 방법의 분리

결과 : loose coupling, 확장성

정의

Dao : 모델에 대한 기본적인 CRUD 인터페이스

Value Object (Model Object) : Dao를 사용하여 데이터를 저장하는 단순 POJO(실제 데이터를 담는 자바 클래스)

-> Dao 가 DBMS서 받은 데이터를 넘겨줄 때는 VO에 담아서 넘겨줌.

 

DaoImpl에서 findById 메소드를 구현한 코드.

public Person findById(int id) { Person person = null;
	try {
		String fmt = "SELECT * FROM %s WHERE id = %d"; 
		String q = String.format(fmt, DB_TABLE_NAME, id);
		rs = statement.executeQuery(q); 
		if (rs.next()) {
			person = new Person(rs.getInt("id")
				, rs.getString("name"), rs.getString("address"));
		} 
	}
	catch (SQLException e) { e.printStackTrace(); }
	return person; 
}

DBMS에서 얻은 데이터를  Person이라는 VO 객체를 생성해서 반환한다.

 


reference 상명대학교 조용주 교수님 고급객체지향프로그래밍

댓글