์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- ํ๋ก๊ทธ๋๋จธ์ค ํฉ์นํ์์๊ธ
- s3 log ์ ์ฅ
- docker-compose kafka
- JPA
- Kafka
- Codedeploy ์ค๋ฅ
- @RestControllerAdvice
- ํ๋ก๊ทธ๋๋จธ์ค ์ปฌ๋ฌ๋ง๋ถ
- AWS Certified Solutions Architect - Associate
- nGrinder
- ์๋ฒ ํฐ์ง๋ ๋์ปค ์ฌ์คํ
- docker compose
- prod docker-compose
- Entity
- ํ์ดํผ๋ฐ์ด์
- redis ์กฐํ
- ์คํํ๋ ๋ฏธ์ค
- ์๋ฐ
- s3 ์ด๋ฏธ์ง ์ ์ฅ
- redis ํ ์คํธ์ฝ๋
- private subnet ec2 ๋ก์ปฌ ์ ์
- ์ ํจ์ค ์ค์ผ์ค๋ฌ
- docker
- docker ps -a
- ๋ค์ค ์ปจํ ์ด๋
- aws saa ํฉ๊ฒฉ
- s3 ์ด๋ฏธ์ง ๋ค์ด๋ก๋
- aws ์ฟ ํฐ
- ํ๋ก๊ทธ๋๋จธ์ค
- ์ ํจ์ค ๋น๋ ์ค๋ฅ
- Today
- Total
๐๐ข๐๐ โ๐๐๐ ๐๐๐ก๐๐ ๐๐๐๐โง
[Spring] DTO ๊ตฌ์กฐ๋ฅผ ์ด๋ป๊ฒ ๊ตฌ์ฑํด์ผํ ๊น ๋ณธ๋ฌธ
[Spring] DTO ๊ตฌ์กฐ๋ฅผ ์ด๋ป๊ฒ ๊ตฌ์ฑํด์ผํ ๊น
๐คRyusun๐ค 2024. 3. 8. 01:26dto ๊ตฌ์กฐ๋ฅผ ์ด๋ป๊ฒ ๊ตฌ์ฑํด์ผํ ์ง ๊ณ ๋ฏผ์ ์ ๋ง ๋ง์ด ํ๋ค.
๋์ ๋ฐฉ๋ฒ์ด ์ ๋ต์ด ์๋์ง๋ง ๋์ ๊ฐ์ ๊ณ ๋ฏผ์ ํ๋ ๋ถ๋ค์ ์ํด ๊ณ ๋ฏผ์ ๊ธฐ๋กํด๋ณธ๋ค.
๐ ๊ณ ๋ฏผ์ ์๋ง
ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ ๋ง์ dto ๊ฐ ๋ง๋ค์ด์ก๋ค.
๊ทธ๋์ ์ฒ์์๋ ๋น์ทํ dto ๊ฐ์ฒด๋ค์ InnerStaticClass ๋ฅผ ์ฌ์ฉํ์ฌ ์์ฑํ์๋ค.
์ฐ์ InnerStaicClass ๋ฅผ ์์๋ณด์
๐InnerStaicClass
๋ด๋ถ ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ ์ด์
- ์ธ๋ถ ํด๋์ค์ ๋ด๋ถ ํด๋์ค๊ฐ ๊ธด๋ฐํ ๊ด๊ณ๋ฅผ ๋งบ์ ๋ ์ฌ์ฉํ๋ค.
- ๋ด๋ถ ํด๋์ค์์ ์ธ๋ถ ํด๋์ค์ ๋ฉค๋ฒ์ ์ฝ๊ฒ ์ ๊ทผํ ์ ์๋ค.
- ์๋ก ๊ด๋ จ์๋ ์ฝ๋๋ฅผ ๋ฌถ์ด์ ์ฝ๋์ ์บก์ํ๋ฅผ ์ฆ๊ฐ์ํจ๋ค.
- ์ธ๋ถ์์๋ ๋ด๋ถ ํด๋์ค์ ์ ๊ทผํ ์ ์๊ธฐ ๋๋ฌธ์ ์ฝ๋์ ๋ณต์ก์ฑ์ ์ค์ผ ์ ์๋ค.
static์ด ๋ถ์ง ์์์ ๋ ๋จ์
- ์ฐธ์กฐ๊ฐ์ ๋ด์์ผ ํ๊ธฐ ๋๋ฌธ์, ์ธ์คํด์ค ์์ฑ์ ์๊ฐ์ , ๊ณต๊ฐ์ ์ผ๋ก ์ฑ๋ฅ์ด ๋ฎ์์ง๋ค
- ์ธ๋ถ ์ธ์คํด์ค์ ๋ํ ์ฐธ์กฐ๊ฐ ์กด์ฌํ๊ธฐ ๋๋ฌธ์, ๊ฐ๋น์ง ์ปฌ๋ ์ ์ด ์ธ์คํด์ค ์๊ฑฐ๋ฅผ ํ์ง ๋ชปํ์ฌ ๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ์๊ธธ ์ ์๋ค.
Static inner class๋ฅผ ์์ฑํ ๋๋ ์ผ๋ฐ์ ์ธ static ๋ฉค๋ฒ์ ์ ๊ทผํ ๋์ ๊ฐ์ด ํด๋์ค๋ช .๋ฉค๋ฒ๋ช ์ผ๋ก ์ ๊ทผํด์ ์์ฑํ๋ค.
Instance inner class์ ๋ฌ๋ฆฌ outer class์ ์ธ์คํด์ค๋ฅผ ์์ฑํ์ง ์์๋ ๋๋ค.
dto ์๊ฐ ๋ง์ง ์๋ค๋ฉด InnerStaticClass๋ก ๊ฐ๋จํ๊ฒ ์์ฑํด๋ ์ข๋ค.
ํ์ง๋ง dto ์๊ฐ ๋ง๋ค๋ฉด ์ฝ๋์ ๊ฐ๋ ์ฑ๊ณผ ํ์ฅ์ฑ์ ๋ฌธ์ ๊ฐ ๋ ์๋ ์๋ค.
๋ฐ๋ผ์ ๋๋ builder ํจํด์ผ๋ก ๋ณ๊ฒฝํ๊ธฐ๋ก ํ๋ค.
๐Builder ํจํด
Builder ํจํด์ ์ฅ์
- ๊ฐ ์ธ์์ ์๋ฏธ๋ฅผ ์๊ธฐ ์ฝ๋ค.
- ํ๋ฃจ์ธํธ API ๋๋ ๋ฉ์๋ ์ฒด์ด๋์ ํ๋ค.
- setter ๋ฉ์๋๊ฐ ์์ผ๋ฏ๋ก ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅ(immutable) ๊ฐ์ฒด๋ฅผ ๋ง๋ค ์ ์๋ค.
- ํ ๋ฒ์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ฏ๋ก ๊ฐ์ฒด ์ผ๊ด์ฑ(consistency)์ด ๊นจ์ง์ง ์๋๋ค.
- build() ๋ฉ์๋์์ ์๋ชป๋ ๊ฐ์ด ์ ๋ ฅ๋์๋์ง ๊ฒ์ฆํ ์ ์๋ค.
- ๊ฐ์ฒด ์์ฑ์ ๊ด๋ จ๋ ์ฝ๋๋ฅผ ๋ณด๋ค ๋ช ํํ๊ณ ํ์ฅ ๊ฐ๋ฅํ๊ฒ ๋ง๋ค ์ ์๊ธฐ ๋๋ฌธ์ ์ฝ๋์ ๊ฐ๋ ์ฑ์ ๋์ด๊ณ ์ ์ง๋ณด์์ ์ฉ์ดํ๋ค.
- ๊ณ์ธต์ ์ผ๋ก ์ค๊ณ๋ ํด๋์ค์ ํจ๊ป ์ฌ์ฉํ๊ธฐ ์ข๋ค.
- ์ ์ธต์ ์์ฑ์๋ณด๋ค ํด๋ผ์ด์ธํธ ์ฝ๋๋ฅผ ์ฝ๊ณ ์ฐ๊ธฐ๊ฐ ํจ์ฌ ๊ฐ๊ฒฐํ๊ณ , ์๋ฐ๋น์ฆ ๋ณด๋ค ํจ์ฌ ์์ ํ๋ค.
๋จ์
- ์ผ๋ถ ํ๋์ ๊ฐ์ ์๋ฃ์ด๋ ํ๋๊ฐ Null๋ก ๋ค์ด๊ฐ๋ฉด์ ๊ฐ์ฒด๊ฐ ์์ฑ๊ฐ๋ฅํ์ฌ, ๊ฐ๋ฐ์๊ฐ ํ์์ ์ผ๋ก ์ค์ ํด์ผ ํ๋ ํ๋๋ฅผ ๋น ํธ๋ฆด ์ ์๋ค.
- ๋น๋ ํจํด์ ์ฌ์ฉํ๋ฉด ์ผ๋ถ ํ๋๋ฅผ ๋ถ๋ณ์ผ๋ก ๋ง๋ค ์ ์๋ค. ์ฆ, ๋น๋๋ฅผ ํตํด ์์ฑ๋ ๊ฐ์ฒด์ ์ผ๋ถ ์์ฑ์ด ๋ณ๊ฒฝ๋ ์ฐ๋ ค๊ฐ ์๋ค.
- ๋น๋ ํจํด์ ๊ตฌํํ๋ ค๋ฉด ์ถ๊ฐ์ ์ธ ๋น๋ ํด๋์ค๊ฐ ํ์ํ๋ฏ๋ก ํด๋์ค ์๊ฐ ๋์ด๋๊ฒ ๋๋ค.
๋จ์ ์ด ํด๋์ค์๊ฐ ๋์ด๋๋ค๋๊ฒ์ธ๋ฐ... ๊ทธ๋๋ ์ ์ง๋ณด์์ ์ฉ์ดํ๋๊น builder ํจํด์ผ๋ก dto ๋ฅผ ์์ฑํ๋ค.
๊ทผ๋ฐ ํ๋ก์ ํธ๊ฐ ์งํ๋ ์๋ก dto ์๊ฐ ๋๋ต 30๊ฐ ์ ๋๋ก ๋์ด๋ฌ๋ค...
์ด๊ฒ ๋ง์...?ใ
๐ซ ๊ณ์๋๋ ๊ณ ๋ฏผ..
ํ์ฌ ๋ฌธ์ ์
Builder ํจํด์ผ๋ก ์์ฑํด์ ๋๋ฌด ๋ง์ dto ํด๋์ค๊ฐ ๋ง๋ค์ด์ก๋ค.
์ค์ผ์ ์๋ ๋ฐฉ๋ฒ์ด ์๋??
๊ณ ๋ฏผํ ๋ฐฉ๋ฒ
- SuperBuilder ์ฌ์ฉ
- @SuperBuilder ๋?
- ๋ถ๋ชจ ํด๋์ค์ ํ๋๋ ํฌํจํ์ฌ ๋น๋๋ฅผ ์์ฑํ ์ ์๊ฒ ํด์ค๋ค. ์ฆ, ๋ถ๋ชจ ํด๋์ค์ ํ๋ ๋ํ ๋น๋์ ํฌํจ๋์ด ์์ฑํ ์ ์๋ค.
- ๋จ์
- ์์ํ ๋ ์ฌ๋ฌ ๋ถ๋ชจ ์ถ์ํด๋์ค๋ฅผ ์์ํ ์ ์๋ค.
- ์ด๋ป๊ฒ๋ ๊ฐ ๋ถ๋ชจ ์ถ์ ํด๋์ค๋ฅผ ๋ง๋ค์ด์ค์ผํ๋ค -> ํ๋์ ์ค๋ณต๋ง ํด๊ฒฐํด์ฃผ๋ฏ๋ก ํ์ฌ dto ํด๋์ค ์๋ฅผ ์ค์ผ์์๋ค.
- ์๋น์ค๋จ์์ ๊ฐ์ฒด ์์ฑ์ด ๊ฐ๋ฅํ๋ค -> ์ฝ๋ ์์ฑ์ด ๋์ด๋๋ค.
- @SuperBuilder ๋?
- Mapstruct ์ฌ์ฉ
- Mapstruct ๋?
- ๊ฐ์ฒด ๊ฐ์ ๋งคํ์ ๊ฐํธํ๊ฒ ์ํํ ์ ์๋๋ก ๋์์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- ์ด๋ ธํ ์ด์ ์ ์ด์ฉํ์ฌ ๋งคํ ๋์ ๊ฐ์ฒด์ ํ๋์ ๊ด๋ จ๋ ๋ฉ์๋๋ฅผ ์์ฑํด์ฃผ์ด ๋ฐ๋ณต์ ์ด๊ณ ์ผ์์ ์ธ ๋งคํ ์ฝ๋ ์์ฑ์ ์ค์ด๊ณ ์ ์ง๋ณด์์ฑ์ ํฅ์์ํฌ ์ ์๋ค.
- ๋จ์
- ๋งคํํ ๋ ค๋ ๊ฐ์ฒด์ ํ๋๊ฐ์ด ๊ฐ์ง์์ผ๋ฉด ์ถ๊ฐ๋ก ๊ตฌํ ์ฝ๋๋ฅผ ์์ฑํด์ผํ๋ค. -> ํ์ฌ ์ฌ๋ฌ dto๊ฐ ์๋ ์ํฉ์์๋ ๋ณต์กํด ๋ณด์ผ ๊ฐ๋ฅ์ฑ ๋๋ค.
- Mapstruct ๋?
ํ์ฌ ๋์ ์ํฉ์์๋ ๋๋ค ํ๋ฝ...ใ
๐คฏ ๊ณ ๋ฏผ์ ์งํ์ค...
๋๋ํ ๊ฐ๋ฐ์๋ถ์๊ฒ ๋์์ ์ฒญํ๋๋ ์ค๋ฌด์์๋ dto ํด๋์ค๊ฐ ์์ฒญ ๋ง๋ค๊ณ ํด์ ๊ด์ฐฎ๋ค๊ณ ํ์ จ๋ค.
๊ทธ๋์ ์ฐ์ ์ง๊ธ์ ๋น๋ ํจํด์ ์ฌ์ฉํด์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๊ตฌ์กฐ๋ก ๊ตฌํํ๊ณ ์๋ค.
dto ์๋ ๊ณ์ ๋์ด๋๊ณ ์์ง๋ง ์๋ฌด์ชผ๋ก ์ ์ ๋ฆฌํด๋ด์ผ๊ฒ ๋ค.
์์ง๋ ๊ณ์ ๋ ์ข์ ๋ฐฉ๋ฒ์ด ์๋์ง ์ฐพ์๋ณด๊ณ ์๋ค..
๋ ์ข์ ๋ฐฉ๋ฒ์ ๋ฐ๊ฒฌํ๋ฉด ์ถ๊ฐ๋ก ์ฌ๋ฆฌ๊ฒ ๋ค.
(ํน์๋ผ๋ ์ข์ ๋ฐฉ๋ฒ์ด ์๋ค๋ฉด ์ถ์ฒํด์ฃผ์๋ฉด ๊ฐ์ฌ๋๋ฆฌ๊ฒ์ด๋๋ค!!๐)
'๐ฃ๐ฟ๐ผ๐ด๐ฟ๐ฎ๐บ๐บ๐ถ๐ป๐ด๐ป > ๐๐ฉ๐ซ๐ข๐ง๐ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Spring] ์ฑ๋ฅ ์ต์ ํ 2ํธ - ์ค์นด์ฐํธ ๋ชจ๋ํฐ๋ง TOOL ์ค์น (1) | 2024.03.14 |
---|---|
[Spring] ์ฑ๋ฅ ์ต์ ํ 1ํธ - ๋ถํํ ์คํธ ngrinder ์ค์นํ๊ธฐ (0) | 2024.03.09 |
[JPA] @Enumerated, @Converter (0) | 2023.08.26 |
[Spring] QueryDSL ๋ฌธ๋ฒ (0) | 2023.07.20 |
[Spring] QueryDSL (0) | 2023.07.18 |