이걸로 Board의 등록/조회/수정/삭제가 다 끝났다. 마지막인 삭제 얘기. CASCADE가 진짜로 동작하는지 확인 Comment, Files는 Board를 ON DELETE CASCADE로 참조하게 만들어뒀었다 (2주차 첫 글에서 다룬 내용). 게시글 하나를 지우면, 거기 달린 댓글/파일도 자동으로 같이 지워지는지 이번에 실제로 확인한 셈이다. Board만 지우는 코드를 짰는데도 DB가 알아서 정리해준다.// BoardMapper.xml DELETE FROM Board WHERE id = #{id}DELETE에 비밀번호를 어떻게 실어 보낼지 수정은 body로 값을 보냈는데, DELETE는 관례상 body를 잘 안 쓴다. 그래서 이번엔 쿼리 파라미터로 보내기로 했다. `DELETE /api/boar..
조회, 등록은 사실 데이터를 이 모양에서 저 모양으로 옮기는 것뿐이었다. 수정은 다르다 비밀번호가 맞는지 판단하는 로직이 들어갔다. 처음으로 진짜 "로직"이 생겼다 // BoardService.javapublic BoardResponse updateBoard(Long id, BoardUpdateRequest request) { BoardEntity board = boardMapper.selectBoardDetail(id); // 비밀번호 검증 if (!board.getPassword().equals(request.password())) { throw new IllegalArgumentException("비밀번호가 일치하지 않습니다."); } //바꿀 부분 덮어쓰기 ..
이번에는 목록 조회랑 상세 조회 두 개를 한 번에 만들었다. Category 때 이미 조회 패턴은 해봤으니 수월했다 목록/상세, SQL에서부터 다르게 짰다 목록 조회는 password를 아예 SELECT하지 않았다.// BoardMapper.xml SELECT id, category_id, title, writer, content, view_count, created_at, updated_at FROM Board ORDER BY id DESC 근데 상세 조회는 예외적으로 password를 포함시켰다.// BoardMapper.xml SELECT id, category_id, title, writer, content, password, view_count, created_at, upd..
