-
Notifications
You must be signed in to change notification settings - Fork 5
Description
๐ ๏ธ ์์ ๋์
BE ์ฝ๋ ์ ์ฒด
โ ์์ ๋ด์ฉ
- ๊ธฐ์กด ์ฝ๋์ ์๋ฐฉํฅ ์์กด์ฑ์ด ๋ค์ ์กด์ฌํจ.
- ์ด๋ก์ธํด, ์๋ก์ด ๊ธฐ๋ฅ ๊ตฌํ์ ๋ณ๊ฒฝ ํฌ์ธํธ๊ฐ ๋์ด๋จ.
- ์ด๋ ๊ธฐ๋ฅ ๊ตฌํ ์๋ ์ ํ๋ก ์ด์ด์ง๊ณ ์์.
์ฐ์ ์ ์ผ๋ก, ๋๋ฉ์ธ ๊ฐ์ ์์กด์ฑ ๋ถ๋ฆฌ๊ฐ ์ฐ์ ์ด ๋์ด์ผํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋์ผ, Service ๊ณ์ธต์ ๋ํ ๋ฆฌํฉํ ๋ง๋ ์งํํ ์ ์๊ฒ ์ฃ !
๋ฌผ๋ก , ๋๋ฉ์ธ ์์กด์ฑ ๋ถ๋ฆฌ๋ฅผ ํ๋ค๋ณด๋ฉด, ์๋น์ค๋ ์์ฐ์ค๋ฝ๊ฒ ๋ ๊ฒ ๊ฐ๊ธด ํฉ๋๋ค.
Intellij์ ์์กด์ฑ ๋ค์ด์ด๊ทธ๋จ์ ํตํด ์์กด์ฑ ํ์
์ ํด๋ณด๋ ค๊ณ ํ๋๋ฐ, ๋๋ฌด ์ง์ ๋ถํ๋๋ผ๊ตฌ์.
๊ทธ๋์ ์ ๊ฐ ์ฝ๋ ๊ตฌ์กฐ๋ฅผ ํ์
ํ๊ธฐ ์ํด ๊ทธ๋ ธ๋ ๋ค์ด์ด๊ทธ๋จ ์ฒจ๋ถํฉ๋๋ค. (Common, OAuth ํจํค์ง๋ ์ ์ธํ๊ณ ์ฃผ์ ๋๋ฉ์ธ๋ง ํ์
ํ์ด์)
๊ฒ์์์ ๋ญ.. ๊ทธ๋ฅ ์์กด ๋ฐฉํฅ์ด๊ตฌ์.
๋นจ๊ฐ์์ผ๋ก ๋์ด ์๋ ๋ถ๋ถ์ Cycle Dependency๊ฐ ๋ฐ์ํ๋ ๋ถ๋ถ์
๋๋ค.
ํ๋์์ ๊ตฌ์กฐ๋ฅผ ๋ฐ๊ฟ ์ ์์ง ์์๊น ์ถ์ด์ ๋ณ๋๋ก ์ฒ๋ฆฌํด๋์์ต๋๋ค. (PinHistory๊ฐ Pin๋ฟ๋ง ์๋๋ผ, PinInfo๋ ์๊ณ ์๋ ๊ตฌ์กฐ๊ฐ ์กฐ๊ธ ์ด์ํด๋ณด์ฌ์ ? ๊ทผ๋ฐ ์ด ๋ฐฉ๋ฒ์ด ๋ง๋ ๊ฒ ๊ฐ๊ธฐ๋ ํด์.)

๊ธ์จ๊ฐ ๊ฐํ์ด๊ณ , ํ ํ์ด์ง์ ๋ด์๋ด๊ณ ์ถ์๋๋ฐ ์ ์๋๋๋ผ๊ตฌ์.. ๋์ ์๋์ผ๋ก ์ดํด ๋ถํ๋๋ ค์ ใ ใ .
๋ค์ด์ด๊ทธ๋จ์ ์์ฑํ๋ฉด์ ๊ณ ๋ฏผํด๋ณธ ๋๋ฉ์ธ๋ณ ์์กด์ฑ ๋ถ๋ฆฌ๋ฅผ ์ด๋ป๊ฒ ํด์ผํ ์ง ์๊ฐํด๋ดค๋๋ฐ์.
ํจ๊ป ์ด์ผ๊ธฐ ๋๋๊ธฐ ์ ์ ์๋ ์ ๋ฆฌ๋ ๋ด์ฉ์ ๋ฐํ์ผ๋ก ๊ณ ๋ฏผํด๋ณด๊ณ ์ค์๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
Topic <-> Member:Topic -> MemberId๊ฐ์ ์ฐธ์กฐ
Member ๊ฐ์ฒด๋ฅผ ์ง์ ์ ์ผ๋ก ์ ํ์๋ ์์ ๊ฒ ๊ฐ๋ค๊ณ ํ๋จํ์ด์. ID ๊ฐ๋ง์ผ๋ก๋ ์ถฉ๋ถํ ์ปค๋ฒ ๊ฐ๋ฅํ ๊ฒ ๊ฐ์์.
๋ฌผ๋ก , ์์ฑ์์ ์ด๋ฆ์ ์์์ค๊ธฐ ์ํ ์์
(Mapper?)์ด ๋ณ๋๋ก ํ์ํ๊ธด ํ์ง๋ง์.
Pin <-> Member:Pin -> MemberId๊ฐ์ ์ฐธ์กฐ
์ด ๋ถ๋ถ๋ ์์ ๋์ผํฉ๋๋ค.
Pin <-> Location:Pin -> LocationId๊ฐ์ ์ฐธ์กฐ
Pin์กฐํ ์ ํญ์ Location์ด ํ์ํ๋ค๋ณด๋, Pin -> Location ๋จ๋ฐฉํฅ์ผ๋ก๋ง ๋ณ๊ฒฝํ ๊น ์ถ์๋๋ฐ์.
ํ์ฅ์ฑ ๊ณ ๋ คํ์ ๋, Location ๊ฐ์ฒด ์์ฒด๋ก ํ ์ ์๋ ์์ญ์ด ๋ง์ ๊ฒ ๊ฐ์์ ์์กด์ฑ์ ๋์ด๋ด๋๊ฒ ๋ง์ง ์์๊น ์ถ์์ด์.
๋ํ, ์๋ช
์ฃผ๊ธฐ๋ก ๋ณด๋ฉด ์๋ก ๋ค๋ฅด๋ค๊ณ ์๊ฐ์ด ๋ค๋๋ผ๊ตฌ์. ๊ทผ๋ฐ ์ด ๋ถ๋ถ์ ํนํ๋ ํ์ ์ด ์๋ค์..
Topic <-> Pin:Topic -> PinId๊ฐ์ ์ฐธ์กฐ
Topic ์กฐํ์ Pin์ด ํจ๊ป ์กฐํ๋์ง๋ง, ๊ทธ ์ญ๋ฐฉํฅ์ ๋ฐ์ํ์ง ์๋๋ค๊ณ ์๊ฐํด์.
๊ทธ๋์, ๋ฐฉํฅ์ฑ์ Topic -> Pin ์ผ๋ก ์๊ฐํ๋๋ฐ์. ๊ฐ์ฒด ์ฐธ์กฐ๋ก ๊ฐ๋๊ฑด ๋ณ๊ฒฝ ํฌ์ธํธ ๋ฌธ์ ๋ก ์ธํด, ๊ฐ์ ์ฐธ์กฐ๋ก ๊ฐ๋ฉด ์ข์ ๊ฒ ๊ฐ์์.
PinInfo <- PinHistory -> Pin:PinInfo <- PinHistory -> PinId
PinHistory์์ ์ด์ ์ ๋ณด ์ ์ฅ์ ์ํด PinInfo๋ฅผ ์๋ ๊ฒ์ ๊ด์ฐฎ์ ๊ฒ ๊ฐ๊ธดํด์.
ํ์ง๋ง, Pin ๊ฐ์ฒด ์ฐธ์กฐ๋ณด๋ค๋ ๊ฐ์ ์ฐธ์กฐ๊ฐ ์ข์๋ณด์ด๋ค์.
Member <-> Permission <-> Topic:MemberId <- Permission -> TopicId๊ฐ์ ์ฐธ์กฐ & ํจํค์ง ๋ถ๋ฆฌ(?)
Permission์ ์ผ์ข
์ validation์ ์ํ ๊ฐ์ฒด์ธ๋ฐ์.
id ๊ฐ๋ค๋ก๋ง ์ฐ๊ด๊ด๊ณ๋ฅผ ๋งบ์ด๋์ด๋ ์ถฉ๋ถํ ๊ฒ์ฆ์ ์ฌ์ฉํ ์ ์์ ๊ฒ ๊ฐ์์.
์์กด์ฑ ์ฃผ์
์ ํตํด, ๋๋ฉ์ธ ๊ณ์ธต์์ ๊ฒ์ฆ์ด ์ํ๋ ์๋ ์๊ฒ ์ฃ !
๋ฌธ์ ๋ ์ด๋ ํจํค์ง์ ๋๋์ธ๋ฐ.. ๊ณ ๋ฏผ ๋ ํด๋ณด์ฃ !
Member <-> Bookmark <-> Topic:MemberId <- Bookmark -> TopicId๊ฐ์ ์ฐธ์กฐ & ํจํค์ง ๋ถ๋ฆฌ
Bookmark๋ ๋ณ๋์ ํจํค์ง๋ก ๋ถ๋ฆฌํด๋ ๊ด์ฐฎ์ ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์ด ๋ค์ด์.
Topic๊ณผ ๋ฐ์ ํ๊ฒ ์ฐ๊ด๋์ด ์์ง๋ง, ๋ณ๋์ ๋น์ฆ๋์ค ๋ก์ง์ด๋ผ๊ณ ์๊ฐํ๊ฑฐ๋ ์.
๊ฐ์ฒด์ ์์กด์ฑ์ ์์ ๊ฐ์ง๋ง, ํจํค์ง ๋ถ๋ฆฌ์์๋ Bookmark Package -> Topic Package๋ฅผ ์์กดํ๊ณ ์์ ๊ฒ ๊ฐ์์.
BookmarkQueryService๊ฐ ์ถ๊ฐ๋๋ฉด ๋์ง ์์๊น ์ถ๊ธฐ๋ ํฉ๋๋ค !
Member <-> Atlas -> Topic:MemberId <-> Atlas <-> TopicId๊ฐ์ ์ฐธ์กฐ & ํจํค์ง ๋ถ๋ฆฌ
์ ์ด ์น๊ตฌ๋ Topic์ด๋์ ๋จ๋ฐฉํฅ์ผ๊น์.. ์ดํดํ ์ ์๊ตฐ์.
์ด ๋ถ๋ถ๋ ์์์ ์ด์ผ๊ธฐํ Bookmark์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ถ๋ฆฌํ๋ฉด ๋์ง ์์๊น ์ถ์ด์.
PinComment <-> PinComment:PinComment <-> PinCommentId๊ฐ์ ์ฐธ์กฐ
ํ์ฌ์ ๋๊ธ ๊ธฐ๋ฅ ๊ตฌ์กฐ๋ฅผ ํฌ๊ฒ ๋ฐ๊พธ์ง ์์ผ๋ ค๋ฉด, ์ฐ์ ๋ถ๋ชจ ๋๊ธ์ Id ๊ฐ๋ง์ผ๋ก๋ ์ถฉ๋ถํ ์ปค๋ฒ๋ ๊ฑฐ๋ผ๊ณ ์๊ฐํด์.
ํ ๊ฐ์ง ๊ฑฑ์ ๋๋ ๋ถ๋ถ์, @OnDelete(action = OnDeleteAction.CASCADE) ์ด ๋ถ๋ถ์ธ๋ฐ์.
Event๋ฅผ ์ ์ ํ ์ฌ์ฉํ๋ค๋ฉด, ๋ถ๋ชจ ๋๊ธ ์ญ์ ์ ๊ทธ ํ์ ๋๊ธ๋ค๋ ์ญ์ ์ํฌ ์ ์์ง ์์๊น ์ถ๋ค์ !
๋๋ฉ์ธ ์์กด์ฑ๋ง ์ฐ์ ์ ์ผ๋ก ์ด์ผ๊ธฐํด๋ณด๊ณ ์ถ๋ค๊ณ ๋งํ์๋๋ฐ, ์์ฑํ๋ค๋ณด๋ ํจํค์ง ๋ฐ ๋ค๋ฅธ ๊ณ์ธต ์์กด์ฑ๋ ๋ง์ด ๊ณ ๋ คํ ๊ฒ ๊ฐ์์.
์ด๋๊น์ง๋ ์ ์๊ฐ์ด๊ณ , ๋ถ์กฑํ ๋ถ๋ถ์ด ์์ฒญ ๋ง์ด ๋ณด์ฌ์. ๊ทผ๊ฑฐ๊ฐ ๋ถ์กฑํ ๋ถ๋ถ๋ ๋ง๊ตฌ์.
๋จ์ ์ฐธ๊ณ ์ฉ์ผ๋ก๋ง ๋ด์ฃผ์๊ณ , ํ์ ํตํด์ ํจํค์ง ๊ตฌ์กฐ๊น์ง ํจ๊ป ๊ณ ๋ คํด๋ณด๋๋ก ํ์ฃ !
๐ ์ฐธ๊ณ ์๋ฃ
โฐ ์ถ์ ์๊ฐ
๋น๊ด์ ์ถ์ ์๊ฐ : 2์ฃผ
๋๊ด์ ์ถ์ ์๊ฐ : 1์ฃผ