๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Spring/JPA

API ๋ถ„๋ฆฌ์™€ ํŒŒ๋ผ๋ฏธํ„ฐ

API ๋ถ„๋ฆฌ

๊ณตํ†ต์œผ๋กœ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ• ๋•Œ ํŒจํ‚ค์ง€๋‚˜ ๊ตฌ์„ฑ๋‹จ์œ„๋กœ ๋งŽ์ด ํ•œ๋‹ค.

API์™€ ํ™”๋ฉด์€ ๊ณตํ†ต ์ฒ˜๋ฆฌํ•ด์•ผํ•  ์š”์†Œ๊ฐ€ ๋‹ค๋ฅด๋‹ค.

⇒ ํŒจํ‚ค์ง€๋ฅผ ๋ถ„๋ฆฌํ•˜์ž

ํŒจํ‚ค์ง€ ๋ถ„๋ฆฌ

Post๋ฐฉ์‹ API ์ž‘์„ฑ

1๋ฒˆ ๋ฐฉ์‹

@PostMapping("/api/v1/members")
    public CreateMemberResponse saveMemberV1(@RequestBody @Valid Member member){
        Long id = memberService.join(member);
        return new CreateMemberResponse(id);
    }

API ์ŠคํŽ™์„ ์œ„ํ•œ ๋ณ„๋„์˜ DTO๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค.

๋ณ„๋„์˜ ํด๋ž˜์Šค๋ฅผ ์•ˆ ๋งŒ๋“ค์–ด๋„ ๋˜๋‹ˆ ํŽธํ•  ๊ฒƒ ๊ฐ™์ง€๋งŒ

์™ธ๋ถ€์—์„œ ์˜ค๋Š” json์„ ๋ฐ”์ธ๋”ฉ ๋ฐ›์•„์“ฐ๋ฉด ๋‚˜์ค‘์— ํฐ ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๐Ÿ’ก API๋ฅผ ๋งŒ๋“ค ๋•Œ๋Š” Entity๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ›์ง€ ๋ง์ž!
๋˜ํ•œ Entity๋ฅผ ์™ธ๋ถ€์— ๋…ธ์ถœํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

 

2๋ฒˆ ๋ฐฉ์‹

@PostMapping("/api/v2/members")
    public CreateMemberResponse saveMemberV2(@RequestBody @Valid CreateMemberRequest request){

        Member member = new Member();
        member.setName(request.getName());
        Long id = memberService.join(member);
        return new CreateMemberResponse(id);
    }

2๋ฒˆ ๋ฐฉ์‹์„ ์จ์•ผ ํ•˜๋Š” ์ด์œ 

์ค‘๊ฐ„์— ํŒŒ๋ผ๋ฏธํ„ฐ์™€ entity๋ฅผ ํ•œ ๋ฒˆ ๋งคํ•‘ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์—

entity ๋‚ด์šฉ์ด ๋ฐ”๋€Œ๋ฉด ๊ฐ’์ด ๋ณ€๊ฒฝ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

๋˜ํ•œ ๋ณ„๋„์˜ innerclass๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์œ ์ง€ ๋ณด์ˆ˜์— ๋งค์šฐ ์šฉ์ดํ•˜๋‹ค.

 

๐Ÿ’ก ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ Entity๋ฅผ ๋„˜๊ธฐ๋ฉด API ๋ฌธ์„œ๋ฅผ ํ™•์ธํ•˜์ง€ ์•Š๊ณ ์„œ๋Š” ํ•ด๋‹น Entity์˜ ์–ด๋А ๋ถ€๋ถ„์ด ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋„˜์–ด๊ฐ€๋Š”์ง€ ์•Œ ์ˆ˜ ์—†๋‹ค. ⇒ Side Effect๊ฐ€ ๋‚˜ํƒ€๋‚  ์ˆ˜ ์žˆ๋‹ค.

 

'Spring > JPA' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Intellij ์œ ์šฉํ•œ ๋‹จ์ถ•ํ‚ค  (0) 2023.01.22
Querydsl (Unable to load class 'com.mysema.codegen.model.Type') ์˜ค๋ฅ˜ ํ•ด๊ฒฐ  (0) 2023.01.22