[Spring Boot] REST API 게시판 서버 만들기 #4(ModelMapper를 이용한 객체 매핑)

프로젝트 구조 설명

- 프로젝트 구조는 이전과 같습니다.

 

 

파일 설명

pom.xml

<dependencies></dependencies> 태그 안에 다음과 같이 modelmapper 의존성을 추가해줍니다.

<dependency>
    <groupId>org.modelmapper</groupId>
    <artifactId>modelmapper</artifactId>
    <version>2.3.5</version>
</dependency>

 

BoardService.java

 

이전의 서비스 로직에서의 코드는 아래와 같이 직접 setter를 통해 하나하나 매핑을 했었습니다.

    @Transactional
    public Object getBoard(Long seq){
        return boardRepository.findById(seq).map(boardEntity -> {
        Optional<BoardEntity> results = boardRepository.findById(seq);
        return results.isPresent() ? results.map(boardEntity -> {
            BoardResult boardResult = new BoardResult();
            boardResult.setContent(boardEntity.getContent());
            boardResult.setUsername(boardEntity.getUsername());
            boardResult.setTitle(boardEntity.getTitle());
            boardResult.setSeq(boardEntity.getSeq());
            return boardResult;
        }).get();
        }).get() : null;
    }

이전의 글에서도 언급했다시피 모든 로직에서 다음과 같은 업무가 발생된다면...

이는 분명히 잘못됬고 불필요한 막노동입니다.. 그래서 이를 수정해줍니다.

 

    @Transactional
    public Object getBoard(Long seq){
        Optional<BoardEntity> results = boardRepository.findById(seq);
        return results.isPresent() ? results.map(boardEntity -> {
            BoardResult boardResult = new BoardResult();
            modelMapper.map(boardEntity, boardResult);
            return boardResult;
        }).get() : null;
    }

확연히 코드량이 줄어드는 것이 보일 것입니다. 위에서는 엔티티의 컬럼이 5개안쪽이지만 20개가 넘는다면...? 30.. 40.. 개가 넘는다면 객체매핑하는데만 40여줄.. 하나의 메소드에 40여줄일뿐 메소드가 10여개가 넘게 있는 서비스 클래스내에서는 400여줄의 불필요한 코드가 낭비되고 있는 것일겁니다.

 

 

현재는 간단한 수준의 modelMapper 사용 용도이지만 추후 modelMapper 만 따로 정리해보도록 하겠습니다.

 

댓글

Designed by JB FACTORY