[Springboot] 12 게시글 삭제 + 수정하기 (+ 테스트)

김호정's avatar
Aug 20, 2024
[Springboot] 12 게시글 삭제 + 수정하기  (+ 테스트)
 
💡
Service 레이어란 ?
 
트랜젝션을 관리해주는 레이어가 필요! → Service
트랜젝션을 관리하는게 Service 의 SRP 다
 
컨트롤러에 트랜젝션 을 걸면 안되는 이유는 ?
→ 트랜젝션의 시간이 쓸데없이 길어진다.
내가 집에서 양치할 때부터 책을 찜하면 도서관에 먼저 도착한 친구는 오래 기다려야 한다.
컨트롤러에 트랜젝션을 걸면 양치할때 부터 기다리게 하는 것.
 
컨트롤러는 요청받고 파싱하고 유효성검사도 하고 뷰도 동적으로 만들어야 하는데
트랜젝션까지 하면… 역할이 너무 많아진다.
 

1. 게시글 삭제하기

Repository

notion image
 
  • deleteById 매서드 생성
  • write 이기 때문에 쿼리 뒤에 Board.class 안 붙여줘도 OK

Test

notion image
 
  • 삭제 후 해당 게시글을 조회하면 우리가 findById 에 throw 해 둔 에러가 터진다.
  • 터지는 거 확인하면 성공
 
💡
then 코드 쓸때, Assertions 는 assertj 꺼 사용하기
 
notion image
 

Test

notion image
findById 테스트 . 정확한 값을 넣으니 초록색
 
notion image
틀린 값을 넣었을때. 에러 발생 확인!
 
notion image
deleteById 매서드 테스트
→ static 에 올려서 사용한다고 하는데 지금은 모르겠음
 

detail.mustache

notion image
삭제 버튼 method = “post”
→ delete 는 post 로 !
→ method = get으로 하면 하이퍼링크를 던져서 해당 id session을 가지고 있는 사람에게 클릭을 유도해 삭제를 유도할 수 있는 위험성이 있다.
 

BoardController

notion image
  • 삭제 post 매핑 되도록 코드 추가
  • 작동 후, list 페이지로 redirect
 

확인

notion image
삭제 누르면 삭제됨
 
notion image
콘솔에 보면
 
select * from board_tb where id = ? 는 상세페이지에 들어갈 때 뜬거.
delete from board_tb where id = ? 는 삭제할 때 뜬거
select * from board_tb order by id desc 는 삭제 후 목록 페이지로 redirect 되어서 뜬거.
 

게시글 수정하기로 이동

 
게시글 수정하기를 하려면 게시글 수정하기로 이동하는 코드 먼저 완성 시켜야 한다.
그 후에 수정하기에 들어가는 매서드를 만든다. 순서 지켜서 하기!
 
notion image
컨트롤러 수정
 
 
notion image
update-form.mustach 에서 model의 값을 받을 수 있도록 수정
 

확인

notion image
수정 버튼을 누르면 수정하기 페이지로 이동함!
 

수정하기 기능 구현

이제 수정하기 기능을 구현하자

update-form.mustache

notion image
 
Update board_tb Set title = ?, content = ? where id =? 쿼리에 사용할 값을 넘겨줄 때
  • where 절 뒤에 사용되는 id는 path 에 넣어서 넘겨준다 → /board/{{model.id}}/update
  • set 뒤에 걸리는 title과 content 는 body로 넘겨준다.
  • input type=hidden 해서 id를 body에 담아 title, content 와 함께 보내는 방법도 있지만
    • 위의 규칙을 지켜서 작성해주자.

Repository

notion image
수정 매서드 완성! 조회가 아니니 Board.class 필요 ㄴㄴ
 

Test

notion image
테스트에서 확인하면 성공!
 
 
notion image
성공
 
 
notion image
틀리면 에러남
 
 

Controller

 
notion image
 
 
++
Parameters 어쩌고 에러 발생할 수 있으니 저장하기 에도 RequestParam 붙여주기
notion image
 
++

delete, update 테스트할 때 db에 없는 값을 넣으면 어떻게 될까?

delete 는 없는 숫자 넣으면 터지지 않음 → 잡을 게 없음!
notion image
캡쳐에서 짤렸지만 초록색(성공) 으로 뜬다.
 
update도 6(없는 값)을 넣고 테스트해보면
notion image
update 매서드도 없는 데이터(6)를 업데이트해도 에러 안남 (초록)
 
 
 
Share article

keepgoing