리포지토리 작성

@Transactional
public void save(Board board) {
    em.persist(board);
}

테스트 생략(persist는 내가 만든게 아니라 제공되는 프레임워크라 테스트 할 필요 없을거 같다)

dto 작성

<aside> 💡

ORM으로 인설트 할 때, 유저 객체에 아이디만 들어 있어도 된다. 즉 비영속 객체도 된다.

</aside>

package shop.mtcoding.blog.board;

import lombok.Data;
import shop.mtcoding.blog.user.User;

public class BoardRequest {

    @Data
    public static class saveDTO {
        private String title;
        private String content;

        // dto 를 클라이언트로 부터 받아서 pc(퍼시스트 컨텍스트)에 전달하기 위해 사용
        public Board toEntity(User user) {
            return Board.builder()
                    .title(title)
                    .content(content)
                    .user(user).build();
        }
    }
}

toEntity는 인설트 할 때만 만들어서 쓴다.

컨트롤러 작성

private final HttpSession session;

@PostMapping("/board/save")
public String save(BoardRequest.saveDTO requestDTO) {
    User sessionUser = (User) session.getAttribute("sessionUser");
    boardRepository.save(requestDTO.toEntity(sessionUser));

    return "redirect:/";
}

Untitled