[스프링부트 blogV1] 10. 글 목록 보기 DTO 만들기

silver's avatar
Dec 30, 2024
[스프링부트 blogV1] 10. 글 목록 보기 DTO 만들기
DTO(Data Transfer Object)는 데이터 전송을 목적으로 설계된 객체이다.
  1. 데이터 캡슐화 DTO는 특정 데이터와 그에 대한 메서드(예: getter, setter)를 포함하여 데이터를 캡슐화한다. 이를 통해 데이터의 구조를 명확하게 정의한다.
  1. 네트워크 효율성 DTO를 사용하면 네트워크를 통해 전송할 데이터의 크기를 줄일 수 있다. 필요한 데이터만 포함시켜 전송할 수 있기 때문에, 불필요한 정보를 제외하고 필요한 데이터만 클라이언트와 서버 간에 주고받을 수 있다.
  1. 데이터 구조 변경 용이 DTO를 사용하면 내부 데이터 구조가 변경되더라도 외부에 노출되는 데이터 형태는 일정하게 유지할 수 있다. 이는 코드의 유지보수성을 높이고, 클라이언트와의 호환성을 유지하는 데 도움이 된다.
  1. 보안 DTO를 사용하여 특정 민감한 데이터를 숨길 수 있다. 예를 들어, 사용자 정보를 전송할 때 비밀번호와 같은 민감한 정보를 DTO에서 제외할 수 있다.
  1. 유효성 검사 DTO는 데이터가 유효한지 검사하는 데 유용하다. 입력된 데이터가 특정 규칙을 충족하는지 확인할 수 있는 메서드를 추가할 수 있다.
  1. API 문서화 용이 DTO를 사용하면 API의 데이터 구조를 명확하게 문서화할 수 있습니다. 클라이언트가 어떤 데이터를 기대할 수 있는지 쉽게 이해할 수 있다.

BoardResponse

//static으로 시작 시 띄운다 // getter,setter알아서 생성 @Data public static class DTO{ private int id; private String title; // 생성자로 Board객체에 있는 걸 옮긴다 public DTO(Board board) { this.id = board.getId(); this.title = board.getTitle(); } }
 

BoardService

public List<BoardResponse.DTO> 게시글목록보기() { List<Board> boardList = boardRepository.findAll(); // 빈 객체 생성 후 데이터를 저장해서 옮긴다. List<BoardResponse.DTO> dtos = new ArrayList<>(); for (Board board : boardList) { BoardResponse.DTO dto = new BoardResponse.DTO(board); dtos.add(dto); } return dtos; }
 

Controller

@GetMapping("/") public String list(Model model) { //DS(request객체를 model이라는 객체로 랩핑해서 전달해준다) List<BoardResponse.DTO> boardList = boardService.게시글목록보기(); model.addAttribute("models", boardList); return "list"; }
Share article

silver