02-07 17:50
Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Archives
관리 메뉴

기록을 합시다.

[Spring] DAO, DTO, VO 본문

공부/Java

[Spring] DAO, DTO, VO

울집고양이세마리 2023. 4. 27. 11:58

DAO, DTO, VO

Spring에서 데이터를 다룰 때 사용되는 클래스들에는 DTO, VO, DAO가 있다. 이 클래스들을 사용 할 때, 각 클레스가 어떤 역할을 수행하는지 명확하게 구분하고 사용하면 코드의 가독성과 유지보수성을 높일 수 있다. 

DAO(Data Transfer Object)

데이터를 영구 저장소(DB, 파일)에 접근하는 객체로, 데이터베이스의 CRUD 작업을 처리해준다. DAO는 비즈니스 로직과 영속적 로직을 분리해주어 유지보수성과 확장성을 높이는 데 사용한다. 

DTO(Data Access Objec)

계층 간 데이터 교환을 위한 객체로, 계층간의 데이터 교환을 위해 사용한다. DB에서 가져온 데이터를 Controller 혹은 Service에서 처리하기 적합한 형태로 변환해준다. DTO는 단순히 데이터를 담기 위한 객체이기 때문에, 로직을 포함하지 않는다.

VO(Value Objectt)

값을 담는 객체로, 데이터베이스나 UI에서 전달받은 값을 저장하는 데 사용한다. VO는 DTO와 유사하지만, DTO는 로직을 갖지 않고, VO는 로직을 가질 때가 많다. 

DAO, DTO, VO 예시

DAO : 데이터베이스에 접근하여 CRUD를 수행하는 객체

public interface BoardDAO {
    // 게시판 글 작성
    public void create(BoardDTO dto);
    
    // 게시판 글 읽기
    public BoardDTO read(int boardNo);
    
    // 게시판 글 수정
    public void update(BoardDTO dto);
    
    // 게시판 글 삭제
    public void delete(int boardNo);
}

DTO : 데이터베이스에서 가져온 결과를 저장하는 객체

public class BoardDTO {
    private int boardNo;
    private String title;
    private String content;
    private String writer;
    private Date regDate;
    
    // getter, setter 생략
}

VO : 컨트롤러와 뷰 사이에서 데이터를 전달하는 객체

public class BoardVO {
    private int boardNo;
    private String title;
    private String content;
    private String writer;
    private String regDate;
    
    // getter, setter 생략
}

 

게시판 목록을 보여주기 위해서 DAO는 데이터베이스에서 게시판 리스트를 가져오고, 가져온 결과를 BoardDTO 객체에 저장하여 반환한다. 후에는 Service나 Controller를 이용하여 게시판 글 목록을 View에 전달하는데, 이 때 필요한 데이터만을 가지고 있는 BoardVO 객체를 생성하여 뷰에 전달해준다. 

 

요약

  • DAO는 DB의 CRUD를 담당해주는 역할
  • DTO는 DAO를 통해 가져온 DB의 데이터를 담아주는 역할, 혹은 DB에게 전달할 데이터를 담아주는 역할을 가지고 있다.
  • VO는 VIEW(UI 혹은 template)에게 데이터를 전달하거나, 혹은 UI에서 Controller에게 데이터를 전달하는 역할을 한다. 
Comments