Spring 게시판 11 - 회원&게시글

춤인형의 개발일지·2025년 1월 17일

Spring실습

목록 보기
12/40

회원의 관계

회원과 게시글의 관계
한명의 회원이 여러개의 게시글을 올릴 수 있으니까 1:N

post가 N쪽이기 때문에 N쪽에 ManyToOne을 달아준다.

	@ManyToOne
    @JoinColumn(nullable = false)
    private UserInfo userInfo;

그럼 post을 가져올 때마다 어떤 회원이 작성했는지를 반환해야한다.
Request에는 userId가 있어야된다.

public record PostRequest(
        @Size(min = 1, max = 100) String title,
        @Size(min = 1) String content,
        Long boardId,
        Long userId

) {
}

그렇다면, post를 저장할 때 UserId까지 같이 저장하면 된다.

//기존 코드
 public PostResponse save(PostRequest postRequest) {
        Board boardId = boardRepository.findById(postRequest.boardId())
                .orElseThrow(() -> new NoSuchElementException("요청하신 게시판이 없습니다." + postRequest.boardId()));
        Post post = postRepository.save(new Post(
        	postRequest.title(), 
        	postRequest.content(), 
        	boardId));
        return new PostResponse(
        	post.getId(), 
            post.getTitle(), 
            post.getContent());
    }
    
//수정된 코드
public PostResponse save(PostRequest postRequest) {
        Board boardId = boardRepository.findById(postRequest.boardId())
                .orElseThrow(() -> new NoSuchElementException("요청하신 게시판이 없습니다." + postRequest.boardId()));
        UserInfo userInfoId = userRepository.findById(postRequest.userId())
                .orElseThrow(() -> new NoSuchElementException("id를 찾을 수 없습니다."));
        Post post = postRepository.save(new Post(
                postRequest.title(),
                postRequest.content(),
                boardId,
                userInfoId));
        return new PostResponse(post.getId(), post.getTitle(), post.getContent());
    }

boardId를 찾고, 또 UserId도 찾은 후 그걸 토대로 해당정보들을 같이 저장하면 된다.

0개의 댓글