inblog logo
|
moohyun
    스프링부트

    서비스 구현 (게시글삭제)

    화낼거양's avatar
    화낼거양
    Nov 18, 2024
    서비스 구현 (게시글삭제)
    Contents
    페이지 구성 :Controller :Service :Repository :작성 내용 테스트하기
     
     
     
     

    페이지 구성 :

     
    notion image
     
     
    💡
    http 1.0 방식으로 진행하고 있기에 (연습용) insert, update, delete 모두 method 방식을 post로 작성하였으며,
    세가지 역할을 모두 post로 통합하였기 때문에 추가로 어떤 행동을 진행하여야 할지를
    ‘/board/id값/delete’ 와 같이 작성하여 컨트롤러에서 구분할 수 있도록 작성하였습니다. (옛날 방식)
     

    Controller :

     
    @PostMapping("/board/{id}/delete") public String delete(@PathVariable("id") int id) { boardService.게시글삭제(id); return "redirect:/"; }
     
    • 이 메서드는 POST 요청을 통해 특정 게시글을 삭제합니다. 클라이언트가 /board/{id}/delete 경로로 POST 요청을 보내면, 해당 id의 게시글이 삭제되고, 클라이언트는 메인 페이지로 리다이렉트됩니다.
     

    Service :

     
    @Transactional public void 게시글삭제(int id) { boardRepository.delete(id); }
     
    없는 아이디 값을 강제로 삭제하려고 하면 당연히 삭제되지 않을 것이고, 이에 대한 예외 처리를 진행하는 것이 옳은 방식이지만 해당 예제에서는 생략하였습니다.

    Repository :

     
    public void delete(int id) { Query q = em.createNativeQuery("delete from board_tb where id = ?"); q.setParameter(1, id); q.executeUpdate(); }
     
    이전에 작성한 코드에서 쿼리문(id 값을 이용하여 특정 행을 제거)만 delete 문으로 바뀌었습니다.
     
     
     
     
     
     

    작성 내용 테스트하기

     
     
     
     
     
    notion image
     
    5번 게시글의 상세페이지로 이동하여 삭제 버튼을 클릭하였습니다.(수정 버튼을 미리 만든 상태)
     
    notion image
     
     
     
    >>>>>>>>>>>>>>>>>
    notion image
     
     
    의도한대로 5번 게시글이 정상적으로 삭제된 것을 확인할 수 있습니다.
     
     
    💡
    http 1.0 방식으로 진행하고 있기에 (연습용) insert, update, delete 모두 method 방식을 post로 작성하였으며,
    세가지 역할을 모두 post로 통합하였기 때문에 추가로 어떤 행동을 진행하여야 할지를
    ‘/board/id값/delete’ 와 같이 작성하여 컨트롤러에서 구분할 수 있도록 작성하였습니다. (옛날 방식)
     
    Share article
    Contents
    페이지 구성 :Controller :Service :Repository :작성 내용 테스트하기

    moohyun

    RSS·Powered by Inblog