CRUD๋ Create, Read, Update, Delete์ ์ฝ์๋ก์จ ๋๋ถ๋ถ ์ปดํจํฐ ์ํํธ์จ์ด๊ฐ ๊ฐ์ง๋ ๊ธฐ๋ณธ์ ์ธ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๊ธฐ๋ฅ 4๊ฐ์ง๋ฅผ ๋ฌถ์ด์ ์ผ์ปธ๋ ๋ง์ด๋ค. ์ด๋ฒ์ ์คํ๋ง ๋ถํธ ๊ณต๋ถ๋ฅผ ํ๋ฉด์ ์คํ๋ง์์ CRUD๋ฅผ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉํ๋ ๋ฒ์ ์ ์ด๋ณด๊ฒ ๋ค.
๐ Create (์ฐฝ์กฐ)
์ด๋ฆ ๊ทธ๋๋ก ๋ฐ์ดํฐ๋ฅผ ๋ง๋ค ๋ ์ฌ์ฉ๋๋ค. ์คํ๋ง ๋ถํธ์์๋ (์์ง ๊ธฐ๋ณธ์ด์ง๋ง), ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ DB์ ์ถ๊ฐ ํ๋ ค๊ณ ํ ๋ ํด๋ผ์ด์ธํธ๋ก ๋ถํฐ ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ requestDto์ ๋ฃ์ ํ, controller์์ ์ค์ ํ url๊ณผ Post ๋ฉ์๋๋ฅผ ๊ฐ์ง api๋ก ๊ฐ์ ๊ทธ์ ๋ง๋ service๋ก ๊ฐ ํ, repository์ ์ฐ๊ฒฐ ๋ DB์ ์ถ๊ฐ๋ฅผ ํ๋ค. ์ฌ๊ธฐ์ ์ค์ํ ์ ์ POST ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค๋ ์ !
๐ Read (์ฝ๊ธฐ)
์ด๊ฒ๋ ์ด๋ฆ ๊ทธ๋๋ก ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ๋ ์ฌ์ฉ๋๋ค. ๊ธฐ์กด์ DB์ ์กด์ฌํ๋ ๋ฐ์ดํฐ๋ฅผ ๊บผ๋ด์์ ์ฝ๊ณ ์ถ์๋ ํ ๋ controller์์ ์ค์ ํ url๊ณผ Get ๋ฉ์๋๋ฅผ ๊ฐ์ง api๋ก ๊ฐ์ ๊ทธ์ ๋ง๋ service๋ก ๊ฐ ํ, repository์ ์ฐ๊ฒฐ ๋ DB์์ ๋ฐ์ดํฐ๋ฅผ ๊บผ๋ด์ responseDto์ ๋ฃ์ด์ ๋ค์ด์๋ ์์ ๋ฐ๋๋ก ๊ฐ์ง๊ณ ๊ฐ๋ค. ๋ํ, ํน์ ํ ๋ฐ์ดํฐ๋ง ์ฝ๊ณ ์ถ์ ๋์๋ ์ฒ์์ ํด๋ผ์ด์ธํธ๋ก ๋ถํฐ ํน์ ์กฐ๊ฑด์ด๋, ํค ๊ฐ์ ๋ฐ์์ requestDto์ ๋ฃ์ ํ, api ์ฐฝ๊ตฌ๋ก ๊ฐ๋ค. ์ฌ๊ธฐ์ ์ค์ํ ์ ์ GET ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค๋ ์ !
๐ Update (๊ฐฑ์ )
์ด๊ฒ์ ๋ฐ์ดํฐ์ ๊ฐ์ ๋ฐ๊พธ๊ณ ์ถ์ ๋/ ๊ฐฑ์ ํ ๋ ์ฌ์ฉ๋๋ค. ๊ฐฑ์ ํ๊ณ ์ถ์ ๋ฐ์ดํฐ์ ํค ๊ฐ๊ณผ ๊ฐฑ์ ํ ๋ ์ฌ์ฉ๋ ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ํด๋ผ์ด์ธํธ๋ก ๋ถํฐ ๋ฐ์์ requestDto์ ๋ฃ์ ํ, controller์์ ์ค์ ํ url๊ณผ Put ๋ฉ์๋๋ฅผ ๊ฐ์ง api๋ก ๊ฐ์ ๊ทธ์ ๋ง๋ service๋ก ๊ฐ ํ, repository์ ์ฐ๊ฒฐ ๋ DB์์ ํค ๊ฐ์ ๋ง๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ ํ, ์๋ก์ด ๋ฐ์ดํฐ๋ก ๊ฐฑ์ ์ ํ๋ค. ์ฌ๊ธฐ์ ์ค์ํ ์ ์ PUT ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค๋ ์ !
๐ Delete (์ญ์ )
์ด๊ฒ์ DB์ ์กด์ฌํ๋ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ ๋ ์ฌ์ฉ๋๋ค. ์ด๊ฒ์ Update ๋ฐฉ์๊ณผ ๋น์ท ํ๋ค. ์ญ์ ํ๊ณ ์ถ์ ๋ฐ์ดํฐ์ ํค ๊ฐ์ ํด๋ผ์ด์ธํธ๋ก ๋ถํฐ ๋ฐ์์ requestDto์ ๋ฃ์ ํ, controller์์ ์ค์ ํ url๊ณผ Delete ๋ฉ์๋๋ฅผ ๊ฐ์ง api๋ก ๊ฐ์ ๊ทธ์ ๋ง๋ service๋ก ๊ฐ ํ, repository์ ์ฐ๊ฒฐ ๋ DB์์ ํค ๊ฐ์ ๋ง๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ ํ,๊ทธ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ๋ค. ์ฌ๊ธฐ์ ์ค์ํ ์ ์ DELETE ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค๋ ์ !
๊ฐ๋ ์ ์ฝ๋ค. ๊ทธ๋ฆฌ๊ณ ์ฝ๋๋ฅผ ์ง์ ํด๋ณด๋ ํจ์ฌ ์ดํด๊ฐ ๋๋ค. CRUD ๋ฅผ ์ฌ์ฉํ๋ ์์ Controller ์ฝ๋๋ฅผ ๊ฐ์ ธ์๋ค.
public class BoardController {
...
//Create
@PostMapping("/create")
public BoardResponseDto createBoard(@RequestBody BoardRequestDto requestDto){
return boardService.createBoard(requestDto);
}
//Read (All)
@GetMapping("/list")
public List<BoardResponseDto> getBoardList() {
return boardService.getBoardList();
}
//Read (One)
@GetMapping("/{id}") // http://localhost:8080/board/{id}
public BoardResponseDto getBoard(@PathVariable Long id){
return boardService.getBoard(id);
}
//Update
@PutMapping("/update/{id}")
public BoardResponseDto updateBoard (@PathVariable Long id,
@RequestBody BoardRequestDto requestDto) {
return boardService.updateBoard(id, requestDto);
}
//Delete
@DeleteMapping("/delete/{id}")
public String deleteBoard(@PathVariable Long id,
@RequestBody BoardRequestDto requestDto){
return boardService.deleteBoard(id, requestDto);
}
}
๐ ์ค๋ ๋๋ ์ ํ์ค ์์ฝ
"์ฐฝ์กฐ์ ํ๊ดด์ ์ฝ๋"
20230418 TIL