카테고리 없음

[Spring] 백엔드 개발 Modelmapper, builder

BEOTIZA♥ 2024. 4. 9. 09:51
Modelmapper

 

* save() 메소드를 통해 하나의 엔티티를 저장
* 전달 되어 오는 데이터는 MenuDTO 타입이므로 Menu Entity로 변환해서 처리
* DB 삽입, 수정, 삭제 로직은  @Transcational 어노테이션

//service

public void registNewMenu(MenuDTO newMenu){
    menuRepository.save(modelMapper.map(newMenu, Menu.class)); //modelMapper 역할, 엔티티 필드, DTO 변수 매칭
}

 

*  파라미터로 전달 받고 MenuService에 구현한 메소드를 호출
*  별도의 Exception 발생이 없었다면
*  클라이언트가 메뉴 목록을 조회하는 기능을 다시 요청할 수 있도록 redirect 처리

//controller

@PostMapping("/regist")
public String registNewMenu(MenuDTO newMenu){
    menuService.registNewMenu(newMenu);
    log.info("newMenu 는: {}", newMenu);
    return "redirect:/menu/list";
}

 

builder

 

 builder 등록
* request 사용자 한테 받는 DTO
* CreatePostResponse Controller 보내는 DTO
 * requestDTO를 POST 엔티티 객체로 바꿔줌
* builder 직접 값 입력

//service

@Transactional
public CreatePostResponse createPost(CreatePostRequest request) {

    Post post = Post.builder()
            .title(request.getTitle()) //getTitle DTO 값
            .content(request.getContent())
            .build();

    Post savedPost = postRepository.save(post);

    // return 출력
    return new CreatePostResponse(
            savedPost.getPostId(),
            savedPost.getTitle(),
            savedPost.getContent());
}

 

 * @RequestBody DTO 받아오고
 * CreatePostResponse
 * ResponseEntity<> : Response 받는 응답 형식, 테이블 아님

//controller

@PostMapping
@Operation(summary = "게시글 작성", description = "제목(title), 내용(content) 입력해주세요")
public ResponseEntity<CreatePostResponse> postCreate(@RequestBody CreatePostRequest request) {

    CreatePostResponse response = postService.createPost(request); //CreatePostResponse
    return new ResponseEntity<>(response, HttpStatus.OK);

}