[게시판 CRUD 만들기] 8장 | 게시글 삭제하기: Delete

2025. 2. 27. 03:19·CS/스프링부트3 자바 백엔드 개발 입문

8.1 데이터 삭제 과정

  1. 클라이언트가 HTTP 메서드로 특정 게시글의 삭제 요청
  2. 삭제 요청을 받은 컨트롤러는 리포지토리를 통해 DB에 저장된 데이터를 찾아 삭제
    1. 기존 데이터가 있을 경우에만 수행
  3. 삭제가 완료됐다면 클라이언트를 결과 페이지로 리다이렉트
    1. 결과 페이지로 리다이렉트 시 RedirectAttributes 클래스 이용해 삭제 완료 메세지도 함께 띄워주기
    2. RedirectAttributes 객체의 addFlashAttribute() 메서드 : 리다이렉트된 페이지에서 사용할 일회성 데이터 등록

8.2 데이터 삭제하기

8.2.1 Delete 버튼 추가하기

Delete 버튼을 상세 페이지에 추가하려고 show.mustache 파일에 코드 작성하기
<a href="/articles/{{article.id}}/delete" class="btn btn-danger">Delete</a>

8.2.2 Delete 요청을 받아 데이터 삭제하기

Delete 요청을 받아 줄 컨트롤러 만들기 : HTML은 POST와 GET 메서드만 제공하기 때문에 GET 방식으로 처리

    @GetMapping("/articles/{id}/delete")
    public String delete(@PathVariable Long id, RedirectAttributes rttr){
        log.info("삭제 요청이 들어왔습니다!"); // delete()가 잘 동작하는지 확인하는 로그 추가
        // 1. 삭제할 대상 가져오기
        Article target = articleRepository.findById(id).orElse(null);
        log.info(target.toString());
        // 2. 대상 엔티티 삭제하기
        if (target != null){
            articleRepository.delete(target); // DB에서 삭제 수행
            rttr.addFlashAttribute("msg", "삭제됐습니다!");
        }
        // 3. 결과 페이지로 리다이렉트하기
        return "redirect:/articles";
    }
  1. 삭제 요청을 받아 오기 위해 @GetMapping() 작성
    1. 1번 글의 삭제 요청 : /articles/1/delete 페이지로 연결
    2. 2번 글의 삭제 요청 : /articles/2/delete 페이지로 연결
    3. @PathVariable : @GetMapping의 URL에서 중괄호에 둘러싸인 값을 매개변수로 가져옴
  2. JPA 리포지토리를 이용해 DB에 접근해 데이터를 삭제한다. 
  3. 리포지토리를 통해 대상 엔티티를 삭제한다. 
  4. 결과 페이지로 리다이렉트한다. 
  5. 삭제 완료 메세지를 남긴다
    1. 객체명.addFlashAttribute(넘겨주려는 키 문자열, 넘겨 주려는 값 객체);
      1. 키 문자열 : 데이터를 꺼낼 때 사용하는 이름
      2. 객체 : 실제로 전달하고 싶은 데이터
    2. rttr.addFlashAttribute("msg", "삭제됐습니다.")
  6. msg 키 값에 담긴 메세지는 리다이렉트된 페이지인 /articles 에서 사용한다. 즉 목록 페이지에 삭제 메세지를 띄운다. 
    1. 해당 뷰 파일인 index.mustache 열어 {{#msg}}{{/msg}} 통해 키를 사용할 범위를 잡는다. 
    2. alert로 msg에 담긴 값을 출력한다. 
    3. 위에 출력하는 것이 좋으니 헤더 안에 삭제 메세지를 출력한다. 
{{#msg}}
<div class="alert alert-primary alert-dismissible"> // 메세지 창 작성
    {{msg}}
    <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>
{{/msg}}

8.2.3 SQL 문으로 직접 DB 삭제하기

DELETE 테이블명 WHERE 조건;
DELETE article WHERE id=3;

 

'CS > 스프링부트3 자바 백엔드 개발 입문' 카테고리의 다른 글

[REST API와 테스트 코드 작성하기] 10장 | REST API와 JSON  (0) 2025.02.27
[게시판 CRUD 만들기] 9장 | CRUD와 SQL 쿼리 종합  (0) 2025.02.27
[게시판 CRUD 만들기] 7장 | 게시글 수정하기: Update  (0) 2025.02.22
[게시판 CRUD 만들기] 6장 | 게시판 내 페이지 이동하기  (0) 2025.02.22
[게시판 CRUD 만들기] 5장 | 게시글 읽기: Read  (0) 2025.02.22
'CS/스프링부트3 자바 백엔드 개발 입문' 카테고리의 다른 글
  • [REST API와 테스트 코드 작성하기] 10장 | REST API와 JSON
  • [게시판 CRUD 만들기] 9장 | CRUD와 SQL 쿼리 종합
  • [게시판 CRUD 만들기] 7장 | 게시글 수정하기: Update
  • [게시판 CRUD 만들기] 6장 | 게시판 내 페이지 이동하기
순토언니
순토언니
기록
  • 순토언니
    secrete_parallel
    순토언니
  • 전체
    오늘
    어제
    • 분류 전체보기 (49)
      • CS (23)
        • 혼자 공부하는 컴퓨터 구조 + 운영체제 (7)
        • 파이썬 알고리즘 인터뷰 (0)
        • 스프링부트3 자바 백엔드 개발 입문 (14)
        • 개발 (2)
      • AI (4)
        • 혼자 공부하는 머신러닝 딥러닝 (0)
        • 논문 리뷰 (0)
        • LLM을 활용한 실전 AI 애플리케이션 개발 (4)
      • 프로젝트 (0)
        • GDSC 겨울 프로젝트 (0)
        • forA (0)
      • 시험 후기 (2)
      • 손에 잡히는 경제 (14)
      • 영화 (0)
      • 독서기록 (2)
      • 맛집DB (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    손경제 리뷰
    손에 잡히는 경제 플러스
    정처기
    pytest
    코딩자율학습단
    론도론도
    손경제 플러스
    손잡경
    테스트 프레임워크
    코딩 자율학습 스프링 부트3 자바 백엔드 개발 입문
    임베딩
    손경제
    스프링부트3
    양귀자
    손에 잡히는 경제
    백엔드
    손경제 플러스 리뷰
    한국어 형태소 분석기
    kiwipiepy
    딥러닝
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
순토언니
[게시판 CRUD 만들기] 8장 | 게시글 삭제하기: Delete
상단으로

티스토리툴바