728x90
DAO(Data Access Object)의 정의
- 자바 프로그램에서 데이터베이스 작업만 수행하는 클래스
- 자바 프로그램의 다른 기능을 하는 클래스와 구분하여 작업함
DAO의 등장 배경
- 하나의 클래스 안에 코드가 많아져서 개발이나 유지 관리가 힘들어짐
- 화면 기능, 데이터베이스 연동 기능 등을 각각 담당하는 클래스로 나누어 프로그램을 구현함
- 유지관리가 편리하고, 재사용성이 높아짐
VO(Value Object)의 정의
- 여러 다른 타입의 데이터를 다른 클래스로 전달할 때 사용됨
- TO(Transfer Object)라고도 함
VO 만드는 방법
- 테이블의 필드명을 속성으로 선언함
- 생성자를 구현함
- 각 속성에 대한 getter/setter 메서드를 구현함
public class MemeberVO {
// 속성
private String id;
private String name;
private int height;
private int weight;
private int age;
// 생성자
public MemberVO( ) {
}
// getter와 setters
...
DAO와 VO를 이용한 회원 정보 조회 시퀀스 다이어그램
- MemberTest가 화면 기능을 하며, MemberDAO 객체를 만들어 list( )메서드 호출
- MemberDAO에서 executeQuery( ) 메서드 호출하여 DB에서 회원정보를 조회하여 레코드셋으로 리턴받음
- 레코드셋의 레코드 수만큼 VO 객체로 만들어 속성에 레코드셋 세팅
- ArrayList에 저장해서 MemberTest로 넘겨주면 getter를 사용해서 콘솔로 값을 출력
DAO와 VO를 이용한 데이터베이스 연동 예제
// MemberVO.java
public class MemberVO {
private String id;
private String name;
private int height;
private int weight;
private int age;
}
// 생성자
public MemberVO( ) {
}
public MemberVO(String name, int age) {
this.name = name;
this.age = age;
}
public MemberVO(String id, String name, int height, int weight, int age) {
this.id = id;
this.name = name;
this.height = height;
this.weight = weight;
this.age = age;
}
getter/setter
...
// MemberDAO.java
import java.util.*;
public class MemberDAO {
private static final String driver = "oracle.jdbc.driver.OracleDriver";
private static final String url = "jdbc:oracle:thin:@127.0.0.1:1521:XE";
private static final String user = "scott";
private static final String pwd = "tiger";
private Connection con;
private Statement stmt;
private ResultSet rs;
public ArrayList<MemberVO> list() {
ArrayList<MemberVO> list = new ArrayList<MemberVO>();
try {
connDB();
String query = "select * from Member";
System.out.println(query);
ResultSet rs = stmt.executeQuery(query);
while (rs.next()) {
String id = rs.getString("id");
String name = rs.getString("name");
int height = rs.getInt("height");
int weight = rs.getInt("weight");
int age = rs.getInt("age");
MemberVO data = new MemberVO();
data.setId(id);
data.setName(name);
data.setName(name);
data.setHeight(height);
data.setWeight(weight);
data.setAge(age);
list.add(data);
} // end while
stmt.close();
con.close();
} catch(Exception e) {
e.printStackTrace();
}
return list;
} // end list()
public void connDB() {
try {
Class.forName(driver);
System.out.println("Oracle 드라이버 로딩 성공");
con = DriverManager.getConnection(url, user, pwd);
System.out.println("Connection 생성 성공");
stmt = con.createStatement();
System.out.println("Statement 생성 성공");
} catch (Exception e) {
e.printStackTrace();
}
}
}
// MemberTest.java
import java.util.ArrayList;
public class MemberTest {
public static void main(String[] args) {
String name = null;
MemberDAO dao = new MemberDAO();
ArrayList<MemberVO> list = dao.list();
for (int i=0; i<list.size(); i++) {
MemberVO data = (MemberVO) list.get(i);
String id = data.getId();
String name = data.getName();
int height = data.getHeight();
int weight = data.getWeight();
int age = data.getAge();
System.out.println("아이디는>>" + id + " 이름은" + name + " 키는" + height + " 몸무게는" + weight + " 나이는" + age);
}
}
}
728x90
'웹 개발 기초 > 자바 웹을 다루는 기술' 카테고리의 다른 글
SQL Developer 회원 정보 생성, 서블릿에서 요청하여 출력(Statement 인터페이스 이용, ojdbc11.jar 파일 첨부) (0) | 2023.02.16 |
---|---|
서블릿으로 회원 정보 테이블의 회원 정보를 조회하는 과정 (0) | 2023.02.16 |
서블릿을 이용한 여러가지 실습 예제 (0) | 2023.02.15 |
자바스크립트로 서블릿에 요청하기 (0) | 2023.02.15 |
GET 방식과 POST 방식 요청 동시에 처리하기 (0) | 2023.02.15 |