๐Ÿ“š TIL 35์ผ์ฐจ

temprmnยท2023๋…„ 7์›” 11์ผ
0
post-thumbnail

๊ฒŒ์‹œ๊ธ€ ๋ฐ ๋Œ“๊ธ€ ์ข‹์•„์š” ๊ธฐ๋Šฅ ์ถ”๊ฐ€์— ๋Œ€ํ•ด

๊ตฌํ˜„ ๋ฐฉ๋ฒ•?

  1. '์ข‹์•„์š”'์— ๋Œ€ํ•œ entity๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
  2. ๊ฒŒ์‹œ๊ธ€๊ณผ ๋Œ“๊ธ€ entity์— '์ข‹์•„์š”'์— ๋Œ€ํ•œ ๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

๊ณ ๋ คํ•  ์ 

  1. ์ด๋ฏธ โ€˜์ข‹์•„์š”โ€™ํ•œ ๊ฒŒ์‹œ๊ธ€์ด๋‚˜ ๋Œ“๊ธ€์— ๋‹ค์‹œ โ€˜์ข‹์•„์š”โ€™ ์š”์ฒญ์„ ํ•˜๋ฉด โ€˜์ข‹์•„์š”' ์ทจ์†Œ
    • ์ค‘๋ณต ๋ฐฉ์ง€๋ฅผ ์œ„ํ•ด ๊ฒŒ์‹œ๊ธ€์ด๋‚˜ ๋Œ“๊ธ€์ด ์‚ฌ์šฉ์ž๋ฅผ ํŒ๋ณ„ํ•˜๊ฑฐ๋‚˜, ์‚ฌ์šฉ์ž๊ฐ€ ๊ฒŒ์‹œ๊ธ€์ด๋‚˜ ๋Œ“๊ธ€์„ ํŒ๋ณ„ํ•ด์•ผํ•จ
  2. ์„ฑ๊ณตํ•˜๋ฉด Client ๋กœ ์„ฑ๊ณตํ–ˆ๋‹ค๋Š” ๋ฉ”์‹œ์ง€์™€ ์ƒํƒœ์ฝ”๋“œ ๋ฐ˜ํ™˜

- ๊ฒฝ์šฐ์˜ ์ˆ˜

  1. '์ข‹์•„์š”'์— ๋Œ€ํ•œ entity๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
    • database์— '์ข‹์•„์š”'์— ๋Œ€ํ•œ table๋„ ์ƒ์„ฑ?
    • ์ปจํ…Œ์ด๋„ˆ๋กœ๋งŒ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด table๊นŒ์ง€ ์ƒ์„ฑํ•  ํ•„์š”๋Š” ์—†์„์ง€๋„ ๋ชจ๋ฅธ๋‹ค...๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ ์ •๋ณด๋ฅผ ์ €์žฅํ•ด์•ผํ•˜๋‹ˆ๊นŒ ํ•„์š”ํ•  ๊ฒƒ ๊ฐ™๋‹ค.
    • entity ์ƒ์„ฑ ์˜ˆ์‹œ
    public class Like {
    	// 1. id
        // 2. user_id
        // 3. post_id <- ?
        // 4. comment_id <- ?
    }
  1. ๊ฒŒ์‹œ๊ธ€๊ณผ ๋Œ“๊ธ€ entity์— '์ข‹์•„์š”'์— ๋Œ€ํ•œ ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
    • ์•„๋งˆ๋„ ํƒ€์ž…์€ boolean
    • 1๋ฒˆ์ฒ˜๋Ÿผ entity๋ฅผ ์ƒ์„ฑํ•œ ๊ฒฝ์šฐ count ๋ณ€์ˆ˜๋กœ ๋Œ€์ฒด ๊ฐ€๋Šฅ
  1. (์ค‘๋ณต ๋ฐฉ์ง€) ๊ฒŒ์‹œ๊ธ€์ด๋‚˜ ๋Œ“๊ธ€์ด ์‚ฌ์šฉ์ž๋ฅผ ํŒ๋ณ„ํ•˜๋Š” ๊ฒฝ์šฐ
    • ์‚ฌ์šฉ์ž๊ฐ€ ์„œ๋ฒ„์— ๊ฒŒ์‹œ๊ธ€ '์ข‹์•„์š”' ์š”์ฒญ์„ ๋„ฃ๋Š”๋‹ค โ†’ ๊ฒŒ์‹œ๊ธ€ table์—์„œ user_id๋ฅผ ์‚ฌ์šฉํ•ด ํ•ด๋‹น ๊ฒŒ์‹œ๊ธ€์— '์ข‹์•„์š”'๋ฅผ ๋‚จ๊ธด ์ ์ด ์žˆ๋Š” ์œ ์ €์ธ์ง€ ์ฐพ์•„๋ณธ๋‹ค(findByUserId.. ๋ญ ์ด๋Ÿฐ๊ฑธ๋กœ) โ†’ ๊ธฐ๋ก์ด ์—†์œผ๋ฉด '์ข‹์•„์š”' +1
  1. (์ค‘๋ณต ๋ฐฉ์ง€) ์‚ฌ์šฉ์ž๊ฐ€ ๊ฒŒ์‹œ๊ธ€์ด๋‚˜ ๋Œ“๊ธ€์„ ํŒ๋ณ„ํ•˜๋Š” ๊ฒฝ์šฐ
    • ์‚ฌ์šฉ์ž๊ฐ€ ์„œ๋ฒ„์— ๊ฒŒ์‹œ๊ธ€ '์ข‹์•„์š”' ์š”์ฒญ์„ ๋„ฃ๋Š”๋‹ค โ†’ ์š”์ฒญ์„ ๋„ฃ์€ ์‚ฌ์šฉ์ž์˜ table์—์„œ post_id๋ฅผ ์‚ฌ์šฉํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญ์„ ๋„ฃ์€ ๊ฒŒ์‹œ๊ธ€๊ณผ id๊ฐ€ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธ โ†’ ๊ธฐ๋ก์ด ์—†์œผ๋ฉด '์ข‹์•„์š”' +1
  1. (์ค‘๋ณต ๋ฐฉ์ง€) '์ข‹์•„์š”'๊ฐ€ ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์„ ํŒ๋ณ„ํ•˜๋Š” ๊ฒฝ์šฐ
    • ์‚ฌ์šฉ์ž๊ฐ€ ์„œ๋ฒ„์— ๊ฒŒ์‹œ๊ธ€ '์ข‹์•„์š”' ์š”์ฒญ์„ ๋„ฃ๋Š”๋‹ค โ†’ '์ข‹์•„์š”' table์—์„œ user_id์™€ post_id๋ฅผ ํ†ตํ•ด, '์ข‹์•„์š”' ์š”์ฒญ์„ ๋„ฃ์€ ์‚ฌ์šฉ์ž๊ฐ€ ํ•ด๋‹น ๊ฒŒ์‹œ๊ธ€์— '์ข‹์•„์š”' ์š”์ฒญ์„ ๋„ฃ์€ ์ ์ด ์žˆ๋Š”์ง€ ํ™•์ธ โ†’ ๊ธฐ๋ก์ด ์—†์œผ๋ฉด '์ข‹์•„์š”' +1
  1. ๊ฒฐ๋ก ์€ ๋ญ ์“ฐ์ง€?...
    • 1๋ฒˆ๊ณผ 5๋ฒˆ์„ ์ฑ„ํƒํ•ด๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค.
      ๊ทธ๋ ‡๊ฒŒ ํ•œ๋‹ค๋ฉด ๊ฒŒ์‹œ๊ธ€๊ณผ ๋Œ“๊ธ€์— ๋Œ€ํ•œ ์ข‹์•„์š” table์„ ๊ตฌ๋ถ„ํ•ด์„œ ์ƒ์„ฑํ•  ๊ฒƒ์ธ์ง€, ํ•ฉ์น  ๊ฒƒ์ธ์ง€๋„ ๊ณ ๋ คํ•ด ๋ณด์•„์•ผํ•œ๋‹ค.
  1. ์—ฐ๊ด€๊ด€๊ณ„
  • ์‚ฌ์šฉ์ž๋Š” ์ข‹์•„์š”๋ฅผ N๋ฒˆ ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์‚ฌ์šฉ์ž : ์ข‹์•„์š” = N : 1 ๊ด€๊ณ„
    • @ManyToOne
  • ๊ฒŒ์‹œ๊ธ€(ํ˜น์€ ๋Œ“๊ธ€) N๊ฐœ๋กœ๋ถ€ํ„ฐ ์ข‹์•„์š”๋ฅผ ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋‹ค?
    • ๊ฒŒ์‹œ๊ธ€ : ์ข‹์•„์š” = N : 1 ๊ด€๊ณ„?
    • @ManyToOne?
profile
`ISFJ` T 49% F 51% /

0๊ฐœ์˜ ๋Œ“๊ธ€