자바 JAVA/자바 관련 상식
[JAVA] DAO, DTO, VO 정리
saml2l
2020. 8. 24. 23:23
- DAO?
- Data Access Object
- DB 에 있는 데이터에 접근하기 위한 객체
- 웹서버는 DB와 연결하기 위해 매번 Connection 객체를 생성함.
- ex) 게시물 리스트를 보거나, 글을 작성하거나 등, 데이터를 불러올 때 마다 Connection 객체를 생성하는 것은 비효율적
- 이것을 해결하기 위해 ConnectionPool 이 있다.
- ConnectionPool 은 Connection 객체를 미리 만들어 놓고 가져다 쓴다. 다 쓴 커넥션은 풀에 반납. 커넥션은 닫지 않는다.
- ConnectionPool 은 한번 만들어두면 DB작업이 필요 할때 Connect 를 새로 만들지 않아도 된다.
- ConnectionPool 은 Connection 을 또 만드는 오버헤드를 효율적으로 하기 위해 DB에 접속하는 객체를 전용으로 하나만 만들고 모든 페이지에서 그 객체를 호출해다 사용한다면? 이렇게 커넥션을 하나만 가져오고 그 커넥션을 가져온 객체가 모든 DB와의 연결을 하는것이 바로 DAO 객체이다.
- DAO 는 DB 를 사용해 데이터를 조회, 조작하는 기능을 전담하도록 만든 오브젝트.
- 사용자는 필요한 interface 를 DAO에게 넘기고 DAO 는 이것을 구현한 객체를 사용자에게 편리하게 사용할 수 있도록 반환해준다.
- DTO(VO)
- DTO: Data Transfer Object
- VO : Value Object VO 는 DTO 와 동일한 개념이지만 read only 속성을 가진다.
- 계층간 데이터 교환을 위한 자바 Beans
- 계층이란, Controller, View, Business Layer, Persistent Layer
- DTO 는 순수한 데이터 객체이며 속성에 접근하기 위한 getter, setter method 만 가진 클래스.
package com.sbs.sbl.mp.dto;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
//lombok 을 사용해서 getter setter 는 생략됨
@AllArgsConstructor
@NoArgsConstructor
@Data
public class Member {
private int id;
private String regDate;
private String updateDate;
private boolean delStatus;
private String delDate;
private boolean authStatus;
private String loginId;
private String loginPw;
private String name;
private String nickname;
private String email;
private String cellphoneNo;
}
참고: :https://jungwoon.github.io/common%20sense/2017/11/16/DAO-VO-DTO/
(기타) 오버헤드란
• From. 위키백과
오버헤드(Overhead)란 어떤 처리를 하기 위해 들어가는 간접적인 처리 시간 · 메모리 등을 말한다.
예를 들어 A라는 처리를 단순하게 실행한다면 10초 걸리는데, 안전성을 고려하고 부가적인 B라는 처리를 추가한 결과 처리시간이 15초 걸렸다면, 오버헤드는 5초가 된다. 또한 이 B라는 처리를 개선해 B'이라는 처리를 한 결과, 처리시간이 12초가 되었다면, 이 경우 오버헤드가 3초 단축되었다고 말한다.
• 어떤 처리를 위해 CPU 처리 사용, 메모리 사용 등.. 이게 많으면 오버헤드가 발생했다고 한다
출처: https://se-sik.tistory.com/21 [SEsik Story]