tuter77

게시판 만들기(2) 본문

GroupStudy

게시판 만들기(2)

tuter77 2023. 1. 29. 19:55

앞서 진행한 Delete 기능 구현의 코드를 가져왔다. (수정이후의 코드)

MainController{

      @DeleteMapping("/delete") //송영진
      public ResponseEntity<Boolean> getDelete(@RequestParam Long id){
                return ResponseEntity.ok(boardService.deleteBoard(id));
      }
}

메인컨트롤러에서 딜리트 매핑을 사용하여 클라이언트의 요청에 응답한다. 

(매핑의 개념에대해 따로 공부해야 한다.)

보면 리스폰스엔티티 형태는 불린으로, Long 타입의 id값을 Requestparam으로 받는 getDelete메서드로 삭제요청을 받는다.  이 요청을 boardService 클래스의 deleteBoard(id값)로 전달하게 된다.처음에 내가 작성할 때는 아무생각없이  deleteBoard의 매개변수를 LongValue로 받으려했었다.하지만 매개변수의 형태를 Long으로 통일하지 못했었던걸 간과했다.. BoardService의 deleleBoard에서는 DTO타입(BoardRequestDTO boardRequestDTO)으로 매개변수를 선언해놓고, 여기 컨트롤러에서는 long타입으로 뒤죽박죽 섞어 선언하여 제대로 작동하지 않았던 것이다.

 

public interface BoardService {

    public boolean deleteBoard(Long boardRequestDTO);
    //TOdO: 영진

}

위 코드는 BoardService 클래스 내부에 선언된 Boolean값의 deleteBoard 객체이다. 이 메서드는 boardRequestDTO값들을 Long 타입 매개변수로 받는다.(DTO에대해서는 따로 공부하려고한다.)

 

@Service
@RequiredArgsConstructor
public class BoardServiceImpl implements BoardService {

    private final BoardRepository boardRepository;

    @Override
    public boolean deleteBoard(Long id) {
        boardRepository.deleteById(id);

        return true;
    }
}

보기에 좋게 delete외에는 모두 지운 코드이다. 

이 클래스는BoardService를 상속받은(implements) BoardService클래스인데, 보면 BoardRepo클래스의 생성자 boardReop- 를 참조하고 있음을 알 수 있다. 

@Override 애노테이션 아래에 deleteBoard 메서드가 있는데, Long 타입 id값을 매개변수로 받아 레포지토리에서 id값에 해당하는 데이터를 deleteById로 지우는 역할을 한다. 수행이 잘되면, true를 안되면 false를 반환한다. 

 

이번 스터디로 스프링 툴에서 메인컨트롤러와 서비스 객체, 레포지토리(저장소), 데이터베이스가 각각 어떻게 협업하는지 대충이나마 감을 잡았다. 

따로 공부해야할것들이 많지만, 우선적으로 매핑, Rquest/ResponseDTO, Optional 등을 공부해야한다.

 

● 페이징 작업

▷레포지토리에서 데이터 가져오는 메서드 만들기.

 

위 내용은 2022.12.28에 공부한 내용입니다.링크 : https://dudwls3278.tistory.com/28