DB CRUD

๋ฐ•์šฐํ˜„ (Joshua)ยท2023๋…„ 4์›” 18์ผ

ํ•ญํ•ด99_TIL

๋ชฉ๋ก ๋ณด๊ธฐ
14/20

๐Ÿ“‹CRUD๋ž€?

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

profile
๋งค์ผ ๋งค์ผ ์„ฑ์žฅํ•˜์ž

0๊ฐœ์˜ ๋Œ“๊ธ€