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);
}