서비스 클래스 만들고 글쓰기 만듬

package shop.mtcoding.blog.board;

import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import shop.mtcoding.blog.user.User;

@RequiredArgsConstructor
@Service // IoC 에 등록된다.
public class BoardService {
    
    private final BoardJAPRepository boardJAPRepository;

    @Transactional
    public void save(BoardRequest.SaveDTO requestDTO, User sessionUser) {
        boardJAPRepository.save(requestDTO.toEntity(sessionUser));
    }
}

컨트롤러 작성

의존성 주입하고 세이브 바꿈

private final BoardRepository boardRepository;
private final BoardJAPRepository boardJAPRepository;
private final BoardService boardService;
private final HttpSession session;

@PostMapping("/board/save")
public String save(BoardRequest.SaveDTO requestDTO) {
    User sessionUser = (User) session.getAttribute("sessionUser");
    boardService.save(requestDTO, sessionUser);

    return "redirect:/";
}

글 수정 서비스

@Transactional
public void update(int boardId, int sessionUserId, BoardRequest.UpdateDTO requestDTO) {

    // 조회 및 예외처리
    Board board = boardJAPRepository.findById(boardId).orElseThrow(()
            -> new Exception404("게시글을 찾을 수 없습니다."));

    // 권한 처리
    if (sessionUserId != board.getUser().getId()) {
        throw new Exception403("게시글을 수정할 권한이 없습니다.");
    }

    // 글수정
    board.setTitle(requestDTO.getTitle());
    board.setContent(requestDTO.getContent());
} // 더티체킹

글 수정 컨트롤러

@PostMapping("/board/{id}/update")
public String findById(@PathVariable Integer id, BoardRequest.UpdateDTO requestDTO) {
    User sessionUser = (User) session.getAttribute("sessionUser");
    boardService.update(id, sessionUser.getId(), requestDTO);

    return "redirect:/board/" + id;
}

글수정폼(글 수정 화면 이동) 서비스

public Board updateForm(int boardId, int sessionUserId) {

    // 조회 및 예외처리
    Board board = boardJAPRepository.findById(boardId).orElseThrow(()
            -> new Exception404("게시글을 찾을 수 없습니다."));

    // 권한 처리
    if (sessionUserId != board.getUser().getId()) {
        throw new Exception403("게시글 수정페이지로 이동할 권한이 없습니다.");
    }

    return board;
}

컨트롤러

@GetMapping("/board/{id}/update-form")
public String update(@PathVariable(name = "id") Integer id, HttpServletRequest request) {
    User sessionUser = (User) session.getAttribute("sessionUser");
    Board board = boardService.updateForm(id, sessionUser.getId());
    request.setAttribute("board", board);
    return "board/update-form";
}