25shshsh / Sample

0 stars 0 forks source link

BoardServiceInterface로 Entity <-> Dto 변환 #7

Open jurogrammer opened 1 year ago

jurogrammer commented 1 year ago

[문제1] service method는 비즈니스 로직을 수행해야 할텐데, 변환 작업이 public으로 선언

  1. 보통 mapstruct라는 라이브러리로 처리
  2. Dto에 of 메서드 정의

    
    public class BoardDTO {
    private Long bno;
    private String title;
    private String content;
    private ClubMember writer;
    private LocalDateTime regDate, modDate;
    
    public static BoardDTO of(Board board) {
        return BoardDTO.builder()
            .bno(board.getBno())
            .title(board.getTitle())
            .content(board.getContent())
            .writer(board.getWriter())
            .regDate(board.getRegDate())
            .modDate(board.getModDate())
            .build();
    }
    }

[문제2]
또한 반환 타입이 Entity면 Controller에서 entity 참조 가능
entity가 컨트롤러에 노출될 경우 아래 같은 이슈 발생할 수 있음
https://www.baeldung.com/spring-open-session-in-view
jurogrammer commented 1 year ago

문제2는 문제가 아닐.것 같네.. dto -> entity 라 세션은 이미 끊어져있을 듯

25shshsh commented 1 year ago

mapstruct 라이브러리 , lombok에 의존. 데이터변환은 Service인터페이스에서 Mapper 인터페이스에 따로,
Querydsl과 마찬가지로 generated에 구현체 자동생성, 코드 가독성과 유지보수에 도움 됌.