JPA

DTO์— Noargs ์‚ฌ์šฉํ•˜๋Š”์ด์œ ์™€ aceessLevel Protected์„ ์‚ฌ์šฉํ•˜๋Š”์ด์œ 

MIN์šฐ 2023. 8. 27. 18:23
728x90

 

 

@Getter
@NoArgsConstructor(access= AccessLevel.PROTECTED)
public class SignUpRequestDto {

    private String email;
    private String password;
}

๐Ÿ‘‰ ์ด๋Ÿฌํ•œ DTO์—์„œ ์Šต๊ด€์ ์œผ๋กœ @NoArgsConstructor ๋ฅผ ๋ถ™์—ฌ์„œ ์‚ฌ์šฉํ•˜๊ณค ํ–ˆ๋Š”๋ฐ,

์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋ฅผ ์ œ๋Œ€๋กœ ์•Œ์ง€ ๋ชปํ•ด์„œ ์ด๋ฒˆ ๊ธฐํšŒ์— ์ œ๋Œ€๋กœ ์•Œ์•„๋ณด๊ณ ์ž ํ•œ๋‹ค.

 

์šฐ์„ , ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ๋ฅผ ์•Œ๊ธฐ ์œ„ํ•ด์„œ๋Š”

์Šคํ”„๋ง์ด ์–ด๋–ป๊ฒŒ Dto๋ฅผ JSON์œผ๋กœ ๋งตํ•‘ํ•˜๋Š”์ง€ ๊ทธ ์›๋ฆฌ๋ฅผ ์•Œ์•„์•ผ ํ•œ๋‹ค.

 

์Šคํ”„๋ง์€ ๋ฐ”๋กœ Jackson ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ObjectMapper๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ JSON์œผ๋กœ ๋งตํ•‘ํ•œ๋‹ค!

 

ObjectMapper๋Š” ์ง๋ ฌํ™”(serialize), ์—ญ์ง๋ ฌํ™”(deserialize)๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š”๋ฐ,

์ด๋•Œ ์ง๋ ฌํ™”๋Š” Java Object → JSON์œผ๋กœ ํŒŒ์‹ฑํ•˜๋Š” ๊ฒƒ,

์—ญ์ง๋ ฌํ™”๋Š” JSON → Java Object๋กœ ํŒŒ์‹ฑํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

 

์ปจํŠธ๋กค๋Ÿฌ์—์„œ DTO๋ฅผ @RequestBody๋ฅผ ํ†ตํ•ด ๊ฐ€์ ธ์˜ฌ ๋•Œ, ๋ฐ”์ธ๋”ฉ์„ ObjectMapper๊ฐ€ ์ˆ˜ํ–‰ํ•œ๋‹ค.

์ด๋ ‡๊ฒŒ ObjectMapper๊ฐ€ ์ง๋ ฌํ™”, ์—ญ์ง๋ ฌํ™”๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ๋งตํ•‘ํ•  ๋•Œ,

DTO๋ฅผ DTO์˜ ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋ฅผ ์ด์šฉํ•˜์—ฌ ์ƒ์„ฑํ•˜๊ฒŒ ๋œ๋‹ค.

์ด๋Ÿฌํ•œ ๊ณผ์ •์—์„œ DTO์˜ ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๊ฐ€ ์—†๋‹ค๋ฉด, ๋งตํ•‘ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜๋Š” ๊ฒƒ์ด๋‹ค.

 

โ€ป ์ถ”๊ฐ€์ ์œผ๋กœ, DTO์˜ ํ•„๋“œ๋“ค์€ ObjectMapper์˜ Setter ๋˜๋Š” Getter๋กœ ๊ฐ€์ ธ์˜จ๋‹ค!

๋˜ํ•œ, Setter๋กœ DTO ํ•„๋“œ๋“ค์— ์ฃผ์ž…์„ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ reflection์ด๋ผ๋Š” ๊ธฐ๋Šฅ์„ ํ†ตํ•ด

๊ฐ’์„ ์ฃผ์ž…ํ•˜๋ฏ€๋กœ Setter๋Š” ๋”ฑํžˆ ํ•„์š”๊ฐ€ ์—†๋‹ค.

๋”ฐ๋ผ์„œ, Getter๋งŒ ์ƒ์„ฑํ•˜์—ฌ ๊ฐœ๋ฐฉํ์‡ ์›์น™์— ๋งž์ถฐ์„œ

์†Œํ”„ํŠธ์›จ์–ด ์—”ํ„ฐํ‹ฐ๊ฐ€ ํ™•์žฅ์—๋Š” ์—ด๋ ค ์žˆ์–ด์•ผ ํ•˜์ง€๋งŒ ์ˆ˜์ •์—๋Š” ๋‹ซํ˜€ ์žˆ์–ด์•ผ ํ•œ๋‹ค. 

 

๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • @NoArgsConstructor(access = AccessLevel.PUBLIC)
    • ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋ฅผ ์ด์šฉํ•˜์—ฌ, ๊ฐ’์„ ์ฃผ์ž…ํ•˜๋Š” ๋ฐฉ์‹์„ ์ตœ๋Œ€ํ•œ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • @NoArgsConstructor(access = AccessLevel.PROTECTED)
    • ์œ„, ์•„๋ž˜์™€ ๊ฐ™์€ ํ”„๋ก์‹œ ๊ฐ์ฒด์˜ ์ƒ์„ฑ๊ณผ ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ ‘๊ทผ ๋ฒ”์œ„ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค.
  • @NoArgsConstructor(access = AccessLevel.PRIVATE)
    - ํ”„๋ก์‹œ ๊ฐ์ฒด ์ƒ์„ฑ์‹œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค.



๋‚ด๊ฐ€ @NoargsConstructor (access = AccessLevel.PROTECTED)๋ฅผ ์ž‘์„ฑํ–ˆ๋˜ ์ด์œ 

๋‹ต์€ ์ ‘๊ทผ ๊ถŒํ•œ์„ Private๋กœ ํ•˜๋ฉด ํ”„๋ก์‹œ ๊ฐ์ฒด ์ƒ์„ฑ์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๊ณ , ์ ‘๊ทผ ๊ถŒํ•œ์„ Public์œผ๋กœ ํ•˜๋ฉด ๋ฌด๋ถ„๋ณ„ํ•œ ๊ฐ์ฒด ์ƒ์„ฑ ๋ฐ setter๋ฅผ ํ†ตํ•œ ๊ฐ’ ์ฃผ์ž…์„ ํ•  ์ˆ˜ ์žˆ๊ธฐ์— ์ ‘๊ทผ ๊ถŒํ•œ์„ Protected๋กœ ์ž‘์„ฑ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

728x90