๊ฒ์๊ธ ๋ฐ ๋๊ธ ์ข์์
๊ธฐ๋ฅ ์ถ๊ฐ์ ๋ํด
๊ตฌํ ๋ฐฉ๋ฒ?
- '์ข์์'์ ๋ํ entity๋ฅผ ์์ฑํ๋ค.
- ๊ฒ์๊ธ๊ณผ ๋๊ธ entity์ '์ข์์'์ ๋ํ ๋ณ์๋ฅผ ์์ฑํ๋ค.
๊ณ ๋ คํ ์
- ์ด๋ฏธ โ์ข์์โํ ๊ฒ์๊ธ์ด๋ ๋๊ธ์ ๋ค์ โ์ข์์โ ์์ฒญ์ ํ๋ฉด โ์ข์์' ์ทจ์
- ์ค๋ณต ๋ฐฉ์ง๋ฅผ ์ํด ๊ฒ์๊ธ์ด๋ ๋๊ธ์ด ์ฌ์ฉ์๋ฅผ ํ๋ณํ๊ฑฐ๋, ์ฌ์ฉ์๊ฐ ๊ฒ์๊ธ์ด๋ ๋๊ธ์ ํ๋ณํด์ผํจ
- ์ฑ๊ณตํ๋ฉด Client ๋ก ์ฑ๊ณตํ๋ค๋ ๋ฉ์์ง์ ์ํ์ฝ๋ ๋ฐํ
- ๊ฒฝ์ฐ์ ์
- '์ข์์'์ ๋ํ entity๋ฅผ ์์ฑํ๋ค.
- database์ '์ข์์'์ ๋ํ table๋ ์์ฑ?
- ์ปจํ
์ด๋๋ก๋ง ์ฌ์ฉํ๋ค๋ฉด table๊น์ง ์์ฑํ ํ์๋ ์์์ง๋ ๋ชจ๋ฅธ๋ค...๊ณ ์๊ฐํ๋๋ฐ ์ ๋ณด๋ฅผ ์ ์ฅํด์ผํ๋๊น ํ์ํ ๊ฒ ๊ฐ๋ค.
- entity ์์ฑ ์์
public class Like {
}
- ๊ฒ์๊ธ๊ณผ ๋๊ธ entity์ '์ข์์'์ ๋ํ ๋ณ์๋ฅผ ์ถ๊ฐํ๋ค.
- ์๋ง๋ ํ์
์
boolean
- 1๋ฒ์ฒ๋ผ entity๋ฅผ ์์ฑํ ๊ฒฝ์ฐ count ๋ณ์๋ก ๋์ฒด ๊ฐ๋ฅ
- (์ค๋ณต ๋ฐฉ์ง) ๊ฒ์๊ธ์ด๋ ๋๊ธ์ด ์ฌ์ฉ์๋ฅผ ํ๋ณํ๋ ๊ฒฝ์ฐ
- ์ฌ์ฉ์๊ฐ ์๋ฒ์ ๊ฒ์๊ธ '์ข์์' ์์ฒญ์ ๋ฃ๋๋ค โ ๊ฒ์๊ธ table์์ user_id๋ฅผ ์ฌ์ฉํด ํด๋น ๊ฒ์๊ธ์ '์ข์์'๋ฅผ ๋จ๊ธด ์ ์ด ์๋ ์ ์ ์ธ์ง ์ฐพ์๋ณธ๋ค(findByUserId.. ๋ญ ์ด๋ฐ๊ฑธ๋ก) โ ๊ธฐ๋ก์ด ์์ผ๋ฉด '์ข์์' +1
- (์ค๋ณต ๋ฐฉ์ง) ์ฌ์ฉ์๊ฐ ๊ฒ์๊ธ์ด๋ ๋๊ธ์ ํ๋ณํ๋ ๊ฒฝ์ฐ
- ์ฌ์ฉ์๊ฐ ์๋ฒ์ ๊ฒ์๊ธ '์ข์์' ์์ฒญ์ ๋ฃ๋๋ค โ ์์ฒญ์ ๋ฃ์ ์ฌ์ฉ์์ table์์ post_id๋ฅผ ์ฌ์ฉํด ์ฌ์ฉ์๊ฐ ์์ฒญ์ ๋ฃ์ ๊ฒ์๊ธ๊ณผ id๊ฐ ์ผ์นํ๋์ง ํ์ธ โ ๊ธฐ๋ก์ด ์์ผ๋ฉด '์ข์์' +1
- (์ค๋ณต ๋ฐฉ์ง) '์ข์์'๊ฐ ์ฌ์ฉ์์ ์์ฒญ์ ํ๋ณํ๋ ๊ฒฝ์ฐ
- ์ฌ์ฉ์๊ฐ ์๋ฒ์ ๊ฒ์๊ธ '์ข์์' ์์ฒญ์ ๋ฃ๋๋ค โ '์ข์์' table์์ user_id์ post_id๋ฅผ ํตํด, '์ข์์' ์์ฒญ์ ๋ฃ์ ์ฌ์ฉ์๊ฐ ํด๋น ๊ฒ์๊ธ์ '์ข์์' ์์ฒญ์ ๋ฃ์ ์ ์ด ์๋์ง ํ์ธ โ ๊ธฐ๋ก์ด ์์ผ๋ฉด '์ข์์' +1
- ๊ฒฐ๋ก ์ ๋ญ ์ฐ์ง?...
- 1๋ฒ๊ณผ 5๋ฒ์ ์ฑํํด๋ณด๊ธฐ๋ก ํ๋ค.
๊ทธ๋ ๊ฒ ํ๋ค๋ฉด ๊ฒ์๊ธ๊ณผ ๋๊ธ์ ๋ํ ์ข์์ table์ ๊ตฌ๋ถํด์ ์์ฑํ ๊ฒ์ธ์ง, ํฉ์น ๊ฒ์ธ์ง๋ ๊ณ ๋ คํด ๋ณด์์ผํ๋ค.
- ์ฐ๊ด๊ด๊ณ
์ฌ์ฉ์
๋ ์ข์์
๋ฅผ N๋ฒ ์์ฒญํ ์ ์๋ค.
์ฌ์ฉ์
: ์ข์์
= N : 1 ๊ด๊ณ
@ManyToOne
๊ฒ์๊ธ
(ํน์ ๋๊ธ
) N๊ฐ๋ก๋ถํฐ ์ข์์
๋ฅผ ์์ฒญํ ์ ์๋ค?
๊ฒ์๊ธ
: ์ข์์
= N : 1 ๊ด๊ณ?
@ManyToOne
?