[Spring] @ManyToOne 어노테이션 5 게시글 쓰기

류재성's avatar
Mar 19, 2024
[Spring] @ManyToOne 어노테이션 5 게시글 쓰기
 

1. View 확인

 
notion image
 
클라이언트에게 데이터를 전달받기 위해 DTO를 입력받는다.
 
import lombok.Data; import shop.mtcoding.blog.user.User; public class BoardRequest { @Data public static class SaveDTO{ private String title; private String content; //DTO를 클라이언트로부터 받아서 영속성 컨텍스트에 전달하기 위해 사용 //INSERT 하는 DTO에서만 만든다. public Board toEntity(User user){ return Board.builder() .title(title) .content(content) .user(user) //user id 가 아니라 user 객체를 넣으면 됨 .build(); } } }
 
💡
DTO 에 toEntity 메서드를 생성한다. 이 메서드를 통해 DTO 를 통해 받은 데이터를 엔티티로 만들 수 있다. 엔티티로 만들게 되면 INSERT 할 때 persist 메서드를 사용할 수 있어 훨씬 편리하다.
 
 

2. 컨트롤러

 
@PostMapping("/board/save") public String save(BoardRequest.SaveDTO requestDTO){ User sessionUser = (User) session.getAttribute("sessionUser"); boardReposiroty.save(requestDTO.toEntity(sessionUser)); return "redirect:/"; }
 

3. 레파지토리

 
@Transactional public void save(Board board) { em.persist(board); //persist 는 이미 있는 것이기 때문에 junit 테스트 필요없을 것 같다. }
 
 
Share article

{CODE-RYU};