만족
[JSP] DAO, DTO 패턴 본문
[JSP] DAO, DTO 패턴
Backend/JSP Satisfaction 2018. 1. 5. 20:36DAO와 DTO는 Database와 통신 시에 사용하는 Design Pattern중 하나이다.
DAO는 Data Access Object로 데이터베이스에 접근 할 때 사용하는 객체이고
DTO는 Data Transfer Object로 Database에 Access하여 가져온 데이터들을 규격화한 객체이다.
DAO/DTO 패턴을 사용하면 반복되는 코드가 줄어들고, 규격화된 데이터들로 인해 효율성이 증가한다.
예를 들어 member라는 table을 대상으로 DAO/DTO 패턴을 적용하면
public class MemberDAO {
public MemberDAO() {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
public ArrayList < MemberDTO > getAllData() {
ArrayList < MemberDTO > list = new ArrayList();
Connection connect = null;
Statement state = null;
ResultSet result = null;
try {
connect = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "USERNAME", "PASSWORD");
state = connect.createStatement();
result = state.executeQuery("select * from member");
while (result.next()) {
String ex = result.getString("ex");
list.add(new MemberDTO(ex));
}
} catch (Exception e) {
System.out.println(e.getMessage());
} finally {
try {
if (connect != null) connect.close();
if (state != null) state.close();
if (result != null) result.close();
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
return list;
}
}
public class MemberDTO {
private String ex = null;
public MemberDTO(String ex) {
this.setEx(ex);
}
public String getEx() {
return ex;
}
}
처럼 사용한다.
외부에서 getAllData() 메소드를 호출하면 DTO에 member table에 있는 데이터를 하나하나 담아서 ArrayList로 return 하게 된다.
값을 꺼낼 때에는 ArrayList의 list(indexNumber) 메소드를 이용하여 DTO객체를 하나씩 사용할 수 있게 된다.
DTO클래스에는 setter가 없는데, 데이터베이스에서 꺼낸 값을 임의로 변경할 필요가 없기 때문에 setter는 필요 없는 것이다.
(대신 생성자에서 값을 할당한다)
'Backend > JSP' 카테고리의 다른 글
[JSP] 세션(Session) (0) | 2018.01.05 |
---|---|
[JSP] 커넥션 풀(Connection Pool) (0) | 2018.01.05 |
[JSP] 서블릿 파라미터(Servlet Parameter) (0) | 2018.01.05 |
[JSP] 빈(Bean) (0) | 2018.01.05 |
[JSP] PreparedStatement (0) | 2018.01.03 |
Comments