๋ชฉ์ฐจ

๊ฐ์ธ ํ๋ก์ ํธ ์์ ๋จ์ CRUD๋ JPA๋ก ๊ตฌํํ๋ ค๊ณ ๋ง์ด ํ๊ณ ์๋ค.
์ญ์ ๋ฏธ๋์ ๋ด๊ฐ ๋ณด๊ธฐ์ํด ๊ธฐ๋กํ๋ค.
๋ถ๋๋ฝ์ง๋ง java8, JPA๋ฅผ ์ต๊ทผ์ ์ฌ์ฉํ๊ฒ ๋์ด์ @Builder ์ด๋ ธํ ์ด์ ๋ ์ฒ์ ์จ๋ณด๊ณ ์ด์ ๋ง ์ ์์ด ์ด์ง ๋๊ฐ๋ ์ค์ด๋ค.(JPA์์๋ ์ํฐํฐ์ setter ์ฌ์ฉ์ ์ต๋ํ ์ง์ํ๋ค.)
@Entity์์ ํ์๋ก ํ๋ ๊ฒ์ ๊ธฐ๋ณธ ์์ฑ์์ด๊ณ @Builder์์ ํ์๋ก ํ๋ ๊ฒ์ ๋ชจ๋ ํ๋๋ฅผ ์ ๋ถ ๋งค๊ฐ๋ณ์๋ก ๊ฐ์ง๊ณ ์๋ ์์ฑ์์ด๋ค.(๊ฐ ์ธํ ํ๊ธฐ ์ํด์)
๋ ๋ค ์๋ตํ ๊ฒฝ์ฐ IDE์์ ์น์ ํ๊ฒ ์๋์ฒ๋ผ ์๋ฌ๋ฅผ ๋ฑ์ด์ค๋ค.(์ํฐํฐ์ ๊ธฐ๋ณธ ์์ฑ์ ์์ ๊ฒฝ์ฐ์ ์ปดํ์ผ ๋จ๊ณ์์ ํ์) ๋น๋์ ๋งค๊ฐ๋ณ์ ์์ฑ์ ์์ ๊ฒฝ์ฐ ๋น๋์ ํ์ํด์ค๋ค.
Entity์์ @NoArgsConstructor ์๋ต ์ ์๋์ฒ๋ผ ์๋ฌ๊ฐ ํ์๋๋ค.
lombok ์ด๋ ธํ ์ด์ ์ผ๋ก ์์ฑ์๋ฅผ ์ ์ธํด์ฃผ๊ฑฐ๋ ์ง์ ์ ์ธํ๊ฑฐ๋ ํด์ผํ๋ค.

@Builder ์ฌ์ฉ ์ @AllArgsConstructor ์๋ต ์ ๋น๋์์ ์๋์ฒ๋ผ ์๋ฌ๊ฐ ํ์๋๋ค.

JPA์ Entity๋ ๋ฐ๋์ ๋ถ๋ณ ๊ฐ์ฒด์ฌ์ผ ํ๋ฏ๋ก Getter๋ง ์ฌ์ฉํด์ผ ํ๋ค.
JPA์ ํต์ฌ์ ์์์ฑ์ด๋ค.
๊ทธ๋์ ๊ฐ ์ธํ ์ ์ํด ์ธํฐ๊ฐ ์๋ @Builder๋ฅผ ์ด์ฉํ๊ณ ์ด ๋น๋๋ ์น๊ตฌ๋ ๋ฐ๋์ ๋ชจ๋ ํ๋๋ฅผ ๋งค๊ฐ๋ณ์๋ก ๊ฐ์ง๊ณ ์๋ ์์ฑ์๋ฅผ ํ์๋ก ํ๋ค.
JPA์ ์ํฐํฐ๋ ๊ธฐ๋ณธ ์์ฑ์๋ฅผ ํ์๋ก ํ๋ค.
๊ทธ๋ฆฌ๊ณ @JsonNaming(value = PropertyNamingStrategy.SnakeCaseStrategy.class)๋ ํด๋ผ์ด์ธํธ์ ๋๋ ค์ค ๊ฒฝ์ฐ ๊ฐ์ JSON๋ค์ด๋ฐ์ผ๋ก ๋ณ๊ฒฝํด์ ๋๋ ค์ฃผ๊ธฐ ์ํด์ ์ฌ์ฉํ๋ค.
์๋ฒ ์ฌ์ด๋์์๋ Camel case๋ฅผ ์ฐ๊ณ ํด๋ผ์ด์ธํธ ์ฌ์ด๋์์๋ Snake case๋ฅผ ์ฐ๊ธฐ ๋๋ฌธ์ด๋ค.
์๋์ฒ๋ผ java์ ์นด๋ฉ์ผ์ด์ค ๋ค์ด๋ฐ์ ์ค๋ค์ดํฌ ๋ค์ด๋ฐ์ผ๋ก ๋ณํํด์ ๋๋ ค์ฃผ๊ธฐ ์ํด์์ด๋ค.
// java ํ๋ ๋ค์ด๋ฐ
private String memberId;
// js ํ๋ ๋ค์ด๋ฐ
let member_id
ํ๋์ @JsonProperty("๋ณํํ ํ๋๋ช ")์ผ๋ก ์ ์ธํด๋ ๋๋๋ฐ ๋์ค์ ํน์๋ ํ๋๊ฐ ๋ ๋ง์์ง์ ์์ผ๋ ๋ฏธ๋ฆฌ ํด๋์ค๋ ๋ฒจ์ @JsonNaming...๋ฅผ ์ ์ธํ๋ค.(์ฌ์ค ํ๋ ๋ช๊ฐ ์๋์ง๋ง ๊ท์ฐฎ์์ ๊ทธ๋ฌ๋ค.)
์ด๋ ธํ ์ด์ ์ด ์ฝ๋ ์๋ฅผ ๋ง์ด ์ค์ฌ์ฃผ์ง๋ง ์ฌ์ฉํด๋ณธ ์ ์ด ์๋ ๋ ๊ฐ์ ์ฌ๋์ ์ญ์ ์ด๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ๊ณต๋ถ๋ฅผ ํด์ผ ํ๋ค.
๋ชฐ๋๋ ์๋ก์ด ๊ฑธ ์์๊ฐ๋ ์ด ๊ณผ์ ์ด ์ฆ๊ฒ๋ค.
๋ญ๊ฐ๋ฅผ ์ฌ์ฉํ ๋๋ ์๋ฆฌ๋ฅผ ์๊ณ ์ฐ๋๊ฒ ์ข์ผ๋ ์ฆ๊ฑฐ์ด ๋ง์์ผ๋ก ํฌ์คํ ์ ์ฌ๋ฆฐ๋ค.
์๋์ ์ด๋ ธํ ์ด์ ์ด ๋ง์ ์ฝ๋๋ฅผ ์ค์ฌ์ค๋ค. ํ์ง๋ง ๋ชจ๋ฅด๋ฉด ๊ณต๋ถ๋ฅผ ํด์ผ ํ๋ค.
@Getter
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Builder
@Table(name = "test")
@JsonNaming(value = PropertyNamingStrategy.SnakeCaseStrategy.class)
๊ฐ์ธ ๊ณต๋ถ๋ฅผ ์ ๋ฆฌํ ํฌ์คํ ์ด๋ผ ํ๋ฆฐ ์ ์ด ์์ ์ ์์ต๋๋ค.
ํ๋ฆฐ ์ ์ ๋๊ธ๋ก ๋ถํ ๋๋ฆฝ๋๋ค.

'IT > development' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [eclipse] eclipse java comment template ์ค์ (0) | 2022.11.23 |
|---|---|
| [spring] ์์กด์ฑ ์ฃผ์ ์ NPE(NullPointerException) (0) | 2022.11.23 |
| [mybatis] mybatis ๋์ ์ฟผ๋ฆฌ ์์ฑ ์ "," ๊ด๋ จ (0) | 2022.11.22 |
| [Spring] spring REST API ๊ณต๋ถ(feat. @RestController) (0) | 2022.11.22 |
| [springBoot] ์ ํจ์ฑ ๊ฒ์ฆ(feat. @Valid, Validated) (0) | 2022.11.22 |
๋๊ธ