커뮤니티 게시판에서 사용자는 작성한 글을 언제든지 수정할 수 있습니다. 이를 위해 수정 페이지 진입부터 수정 완료까지의 흐름을 Controller → Service → Repository 레이어로 나누고, ModelMapper를 활용하여 DTO → Entity 간의 변환을 효율적으로 처리했습니다.
@GetMapping("/Community/modify1")
public String modify1(@RequestParam("no") int no, Model model) {
Community1DTO community1DTO = communityService.modify1(no);
model.addAttribute(community1DTO);
return "/Community/modify/modify1";
}
@PostMapping("/Community/modify1")
public String modify1(Community1DTO communityDTO) {
communityService.update1(communityDTO);
String cate = communityDTO.getCate();
return "redirect:/Community/" + cate;
}
GET /modify1 호출 시: 게시글 번호로 기존 데이터를 조회하여 수정 폼에 전달POST /modify1 호출 시: 수정된 내용을 update1()에 위임하고, 수정 완료 후 해당 카테고리로 리디렉션/modify2도 같은 구조이며, mode 값에 따라 수정 폼 뷰를 다르게 적용 (익명/비밀글 대응 등)
@Transactional
public void update1(Community1DTO communityDTO) {
Community1 community1 = community1Repository.findById(communityDTO.getNo())
.orElseThrow(() -> new RuntimeException("해당 게시글이 존재하지 않습니다."));
String writerUid = communityDTO.getWriter();
User user = userRepository.findById(writerUid)
.orElseThrow(() -> new RuntimeException("작성자 정보를 찾을 수 없습니다."));
modelMapper.map(communityDTO, community1);
community1.setUser(user);
}
findById()로 기존 게시글을 조회하고, 없으면 예외 처리User 엔티티로 조회해 연관관계 설정ModelMapper를 통해 DTO의 변경된 값을 기존 Entity에 덮어쓰기