- 회원가입/로그인(인증/인가)
- 게시판 생성, 수정, 삭제, 조회
- 댓글 생성, 수정, 삭제, 조회
지금까지 개인프로젝트를 구현시킨 기능들이다.
이번 프로젝트를 만들면서 인증/인가(jwt)와 DTO 중요성을 배웠다.
그 중에서도 결합도를 낮추기 위해서 직접 Entity에 접근하지 않기 위해 DTO만들어서 접근하였다.
그러나 Request할때 Response할때 모두 DTO파일을 따로 만들어주려고 하니
프로젝트에 파일이 효율적이기 못하게 늘어나는 것 같다는 생각이 들어서
어떻게 하면 각 기능마다 1개의 DTO로 Request와 Reponse를 사용할 수 있을까를 고민했다.
그렇다면 어떤 방법으로 DTO를 관리해야 할까?
DTO 패키지 내 클래스 파일들을 깔끔하게 관리하기 위해 Inner Class(Nested Class)로 DTO를 관리하는 것!!
public class BoardDto {
@Getter
@Setter
public static class BoardRequestDto {
private String boardTitle;
private String boardWriter;
private String contents;
private String password;
private BoardMember boardMember;
public BoardRequestDto(String boardTitle, String boardWriter, String contents, String password){
this.boardTitle = boardTitle;
this.boardWriter = boardWriter;
this.contents = contents;
this.password = password;
}
@Getter
static class BoardMember{
private Long memberId;
public BoardMember(Members member){
this.memberId = member.getId();
}
}
}
@Getter
public static class BoardResponseDto{
private Long boardId;
private String boardTitle;
private String boardWriter;
private String contents;
private String password;
private List<CommentDto.CommentsResponseDto> commentsResponseDtoList;
public BoardResponseDto(Boards board) {
this.boardTitle = board.getBoardTitle();
this.boardWriter = board.getBoardWriter();
this.contents = board.getContents();
this.password = board.getPassword();
}
public BoardResponseDto(Boards board, List<CommentDto.CommentsResponseDto> commentsResponseDtoList) {
this.boardId = board.getId();
this.boardTitle = board.getBoardTitle();
this.boardWriter = board.getBoardWriter();
this.contents = board.getContents();
this.password = board.getPassword();
this.commentsResponseDtoList = commentsResponseDtoList;
}
}
}
이렇게 하면 1개의 Class 파일로 DTO를 Inner Class로 관리하면 조금 더 깔끔하게 패키지를 관리할 수 있고,
코드의 캡슐화를 증가시키며, 코드의 복잡성도 줄일 수 있다는 장점이 생긴다고 한다.
'내일배움캠프 > Today I Learned' 카테고리의 다른 글
[TIL] 나의 서른 다섯번째 회고록 (0) | 2022.12.25 |
---|---|
[TIL] 나의 서른 네번째 회고록 (0) | 2022.12.22 |
[TIL] 나의 서른 두번째 회고록 (1) | 2022.12.20 |
[TIL] 나의 서른 한번째 회고록 (0) | 2022.12.19 |
[TIL] 나의 서른번째 회고록 (0) | 2022.12.16 |