커뮤니티 게시글 수정 – 모델 매핑 기반 클린 업데이트 흐름

커뮤니티 게시판에서 사용자는 작성한 글을 언제든지 수정할 수 있습니다. 이를 위해 수정 페이지 진입부터 수정 완료까지의 흐름을 Controller → Service → Repository 레이어로 나누고, ModelMapper를 활용하여 DTO → Entity 간의 변환을 효율적으로 처리했습니다.


✅ 핵심 기술: ModelMapper, @Transactional, 예외 처리 기반 안전한 수정 흐름


🔷 기술 흐름

1. Controller 레이어 – 수정 페이지 진입 및 처리


@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;
}

/modify2도 같은 구조이며, mode 값에 따라 수정 폼 뷰를 다르게 적용 (익명/비밀글 대응 등)


2. Service 레이어 – 게시글 조회 및 수정 처리


@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);
}


문제와 해결