๊นจ๋ฌ์ ์
๋๋ ๋ค๋ฅธ ํ์๋ค๋ณด๋ค ๋ถ์กฑํ ์ ์ด ๋ง๋ค...
๋ง์ด ๋ฐฐ์๊ฐ์!
ํ์ดํ
!
๊ทธ๋ฆฌ๊ณ ํ์ ๋ง๋ด๋ก์(๋ง๋..?) ์๊ธฐ๋ฅผ ๋งก๊ณ ์๋๋ฐ ์ดํ์ ๋ณด๋ ๋๋ฌด ์ค๊ตฌ๋๋ฐฉ ์ ๋ฆฌ๊ฐ ๋์ด์์๋ค. ์ ๋ฆฌ๋ฅผ ๋ ์ ํ์!
01/06 ์ ๊ฐ๋ฐ ์ผ์ง
์๊ฑด1 : ๊ฐ์ฒด์งํฅ์ 5๊ฐ์ง ์์น์ค ์์กด ์ญ์ ์์น ์ฝ๋ ์ปจ๋ฒค์ ์ถ๊ฐ ์ค์ ํจ!
User of(String email, String password…),
User of(UserCreateRequest) entity๋ request์ ์์กดํ์ง ์๊ณ ๊ทธ ์์ฒด๋ก ์กด์ฌํด์ผ ํ๋ค๊ณ ์๊ฐํจ
Request.toEntity(User) → User of(String email, String password…)
์ด ๋ถ๋ถ์ ์ดํ ๋ฌธ์ ์ ์ ๋ฐ๊ฒฌ, Sequence ๊ฐ์ ๊ฒฝ์ฐ request๊ฐ ํ์ํ์ง ์๋๋ฐ ์ด๊ฒ์ ํต์ผํํ๊ธฐ ์ํด์๋ SequenceRequest๋ฅผ ๋ง๋ค์ด์ผ ํ๋๋ฐ ๋ถํ์ํ request dto์ธ๋ฐ ๋ง๋ ๊ฒ ์ธ๊ฐ?
→ ํ์ง๋ง, ํ ํ์์ ์๊ฒฌ(์ต๋ช
์ฑ ๋ณด์ฅ)์ ๊ตณ์ด entity๋ฅผ ์์ฑํ๋ ๋ถ๋ถ์์ ์ด request๋ฅผ ํ๋ผ๋ฏธํฐ๋ก ์ ๋ฌํ๋ ๋ถ๋ถ์ด ๊ผญ ๋ชจ๋ ๋ถ๋ถ์์ ํต์ผํ๊ฐ ๋์ด์ผ ํ๋๊ฐ? request๋ฅผ ์ ๋ฌํ๋ ๋ฐฉ์์ ์ฌ์ฉํ์๋ ๊ฒ์ ๊ฐ๋ฐ์ ํธ์์ฑ, ๋ณ๊ฒฝ ๊ฐ๋ฅ์ฑ์ ๊ณ ๋ คํด์ ์ ์ ํ ๋ฐฉ์์ ํผ์ฉํด์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ด๋ค๊ฐ์
๋๋ค.
→ ์ด request๋ฅผ ํ๋ผ๋ฏธํฐ๋ก ์ ๋ฌํ๋ ๋ฐฉ์๊ณผ ํ๋๋ฅผ ํ๋ผ๋ฏธํฐ๋ก ์ ๋ฌํ๋ ๋ฐฉ์์ ํผ์ฉํด์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ฝ๋ ๋ด ํต์ผ์ฑ(= ์ปจ๋ฒค์
)์ ์๋ฐฐํ๋ ๊ฒ์ธ๊ฐ? ์
๋ํ ์๊ฒฌ์ด ๊ถ๊ธํฉ๋๋ค. → ์ ๋ ์ฝ๋ฉ ์ปจ๋ฒค์
์ด๋ผ๋๊ฒ entity์ ์์ฑ๋ฐฉ์์ ๊ณ ์ ํ๋ ๊ฒ์ ์๋๋ผ๊ณ ์๊ฐํ๋๋ฐ..
๊ฒฐ๋ก : ์์ ์๊ฒฌ์ ๋ํด์ ํํฐ๋์ ์ ์ ํํ ๋ฆฌ ๋ฐฉ์์ด ์๋ Request์ toEntity๋ผ๋ ํด๋นํ๋ Request์ Entity๋ฅผ ์์ฑํ ์ ์๋ ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ Entity๊ฐ Request์ ์์กดํ๋ ๊ฒ์ด ์๋ Request๊ฐ Entity๋ฅผ ์์กดํ๊ฒ๋ ํ๋๊ฒ ์ข๋ค๊ณ ํ์ จ๋ค.
์๊ฑด2 : Project Directory ๊ตฌ์กฐ์ ๋ํ ์ ๋ฆฌ
goods(๊ณต์ฐ), sequence(ํ์ฐจ), ์ข์(seat), ๊ณต์ฐ์ฅ(place) ๊ฐ ๋๋ฌด depth ๊ฐ ๊น์ง์๊ฒ ๊ตฌ์ฑํ๊ณ ์ถ์๋ฐ service๋ controller๊ฐ ์์ฑ๋์ง ์๋๋ผ๋ ํจํค์ง ๋ถ๋ฆฌ๊ฐ ์ข์๊น์? ์๋๋ฉด place → seat , goods → sequence ์ด๋ฐ์์ผ๋ก ํ์๋ก ๋ฃ์ด์ฃผ๋ ๊ฒ์ด ๋ช ํํ ๊น์
๊ฒฐ๋ก : ํ๋ก์ ํธ ๊ธฐํ์ ๋ถ๋ฆฌํ๋๊ฒ์ด ๋ง๋ค๊ณ ํ๋จ๋จ
์๊ฑด3 : Entity์ Dto์ ๋ณ์ Type์ ์ฐธ์กฐํ์ผ๋ก ์ฌ์ฉํ ์ง ์๋๋ฉด ์์ํ์ ์ผ๋ก ์ฌ์ฉํ ์ง์ ๋ํ ์๋ ผ
Long, User ์ฐธ์กฐํ ํ์
@ColumnDefault๊ฐ ์ค์ ๋์ด๋ ์๋ก์ด row insertํ ๋ default๊ฐ์ด ๋ค์ด๊ฐ๋๊ฒ์ด์๋๋ผ, null ๋ก ๋ค์ด๊ฐ๋๋ฐ, long int ๊ฐ์ด primitive ํ์
์ด ์๋๋ผ ๊ธฐ๋ณธ ์ด๊ธฐ์ธํ
๊ฐ (0์ ๋ฃ๋ ๊ฒ์ด๋๊น, int long ๊ฐ์ ๊ฒฝ์ฐ๋ ์ด๊ธฐ ์ธํ
๊ฐ 0์ด๋ผ์ )
์ด์ ๋ → ๊ธฐ๋ณธ์ ์ผ๋ก insertํ ๋, ๊ฐ์ฒด์ ๋ชจ๋ ํ๋์ ๋ํด์ insertํ๊ธฐ ๋๋ฌธ์ null๋ก insert๊ฐ ๋จ
@DynamicInsert, @DynamicUpdate ๋ฅผ ๋ถ์ด๋ฉด, null์ ์ ์ธํ๊ณ row๊ฐ ์ถ๊ฐ๋จ
๊ฒฐ๋ก : ํํฐ๋์ Entity์์์ ํ๋๊ฐ์ ์ ์ง๋ณด์ ๋ฐ ์ฌ์ฉ์ ์ธก๋ฉด์ผ๋ก ๋ดค์๋ ์ฐธ์กฐํ์ด ๋ ์ข์๊ฒ ๊ฐ๋ค๊ณ ํ์ จ๋ค.
์๊ฑด4: ๊ฒฝ๋งค ๋จ์ ์๊ฐ ์ฒ๋ฆฌ์ ๋ํ ์์ด๋์ด
์ข์ ์ถ๊ฐ ์, ๊ฒฝ๋งค ๋ฑ๋ก(DB์)
redis ์ key(๊ฒฝ๋งค id), value(ํด๋น ๊ฒฝ๋งค์ ๋ํ ์
์ฐฐ๊ฐ) ๋จ์ ์๊ฐ ๋ฑ๋ก(ํ์ฌ ~ ๊ฒฝ๋งค ์ข
๋ฃ๋ ๋๊น์ง์ ์๊ฐ) TTL
์ ์ ๋ค์ด ์ข์์ ์ ํ
์น ์์ผ์ ์ฌ๋๋ฐ, STOMP ๋ฐฉ์(์ฑํ
๋ฐฉ ์ฒ๋ผ), 1๋ฒ ์ข์์ ์ ํํ ๋ชจ๋ ์ ์ ๋ค์ ํ๋์ ์ฑํ
๋ฐฉ์ ์ด๋ํ๋ ํ์
์ฌ๊ธฐ์ redis์ ์ ์ฅ๋ ๋จ์ ์๊ฐ์ ๋ฟ๋ ค์ค
๊ฒฝ๋งค ์ข
๋ฃ == redis ์ ํค๊ฐ expire๋จ
ํค์ ๋ํด์ listener๋ฅผ ๋๊ณ ๊ณ์ ์ฒดํฌ
์ด์ ํค๊ฐ ์์ด์ง๋ฉด, ๊ฒฝ๋งค ์ข
๋ฃ๋ฅผ ํธ์ถ
๊ฒฐ๋ก : ์์ด๋์ด ์์ฒด์์ ๋ฌธ์ ์ ์ ์์ ๋ฐ๋ผ์ ์ข์์์ด๋์ด!
01/07 ์ ๊ฐ๋ฐ ์ผ์ง
์๊ฑด1: ์์ธ์ฒ๋ฆฌ์งํ์ Spring์ ๋ฑ๋ก๋ผ์๋ ๋ฉ์๋๋ Overrided๋ฅผ ์ฌ์ฉํด์ Customํ๋๊ฒ์ด ์ข์๊ฐ?
์์ธ ์ฒ๋ฆฌ ํธ๋ค๋ฌ ๊ตฌํ์์, ๋ชจ๋ ์์ธ์ ๋ํด ์์ฑํ๋ ๊ฒ์ด ์๋๋ผ ResponseEntityExceptionHandler ์ถ์ ํด๋์ค์ ์ ์๋์ด ์๋ ์์ธ๋ค์ ์ค๋ฒ๋ผ์ด๋ฉ ํ์
๊ฒฐ๋ก : Spring์ ์ ๋ฆฌ๋ผ ์๋ Exception ๋ฉ์๋๋ @Overried ํด์ ์ฌ์ฉํ๋๊ฒ์ด ์ข๋ค. ์ฆ ์๋๊ฑด ์ฌ์ฉํ์.
์๊ฑด2: ํ์๊ฐ์ ์ ํด๋ํฐ ์ธ์ฆ์ ๋ํ ์๊ฑด
ํด๋ํฐ ์ธ์ฆ ์์
:ํฐ์_ํ์ธ_ํ์: ์ ์ธ์ฆ(์ธ์ฆ ๋ฒํธ ๋ฐ์ก ์, ํธ๋ํฐ ์ค๋ณต ์ฌ๋ถ ๊ฒ์ฆ → ํ์ ๊ฐ์
๋ฒํผ ๋๋ฅธ ํ, ์ธ์ฆ ๋ฒํธ์ ๋ํ ๊ฒ์ฆ)
๊ฐ์
์, ์ธ์ฆ ๋ฒํธ์ ํด๋ํฐ ๋ฒํธ์ ๋ํด ๊ฐ์ด ์ธ์ฆ(ํ ์ธ์ฆ)
๊ฒฐ๋ก : 1๋ฒ ๋ฐฉ์์ ์ฑํํ์ฌ ์งํ ๊ฒฐ์
์๊ฑด3: ํ๋ก์ ํธ ๊ตฌ์กฐ์ ๋์์ฑ ์ฒ๋ฆฌ๋ฅผ ์ํด ์ฌ์ฉํ ์ ์๋ ๋ค์ํ ๋ฐฉ์์ค ๋๊ด์ ๋ฝ์ ์ข์ ๋ฐฉ๋ฒ์ธ๊ฐ?
@Version(๋๊ด์ ๋ฝ) → ๋์์ ์ ๊ทผํ๋ ํธ๋์ญ์
์ด ๋ ๊ฐ ์๋ค๋ฉด, ๋จผ์ ์ ๊ทผํด์ ์ฑ๊ณตํ ํธ๋์ญ์
์ด version์ ์ฌ๋ ค์ฃผ๊ณ , ์ดํ์ ๋ฆ์ ํธ๋์ญ์
์ ๋ฒ์ ์ ํ์ธํ๊ณ ์คํจ ์ฒ๋ฆฌ๋จ
๊ฒฐ๋ก : ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ ๋์์ฑ์ ์ฒ๋ฆฌํ ์ ์๋ ๋ฐฉ๋ฒ๋ค์ ๋ํด ์งํํด๋ณด๊ณ ์ถํ ๊ฒฐ์
'TIL๐ฅ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
24.01.10 TIL (0) | 2024.01.10 |
---|---|
24.01.09 TIL (0) | 2024.01.10 |
24.01.04 TIL (1) | 2024.01.05 |
24.01.03 TIL (0) | 2024.01.03 |
24.01.02 TIL (0) | 2024.01.02 |