๐Ÿ”ฅ

์šฐ๊ธฐ๋‹˜์˜ ๋ง์”€

06.15 ์ด๋ฒคํŠธ ์Šคํ† ๋ฐ ์ดํ›„ ๋ฉ˜ํ† ๋‹˜ ํ”ผ๋“œ๋ฐฑ

  1. ์ด๋ฉ”์ผ ์ถ”๊ฐ€ํ•˜๋ฉด ์ข‹๋‹ค.
  1. could์™€ should ์ •๋ฆฌํ•˜์ž
      • ๋‹จ์ˆœํ•œ ์กฐํšŒ ํ•„ํ„ฐ๋ง๊ณผ ๊ธฐ๋Šฅ ์ถ”๊ฐ€์˜ ์šฐ์„ ์ˆœ์œ„ ๋ณ€๊ฒฝ
  1. ์œ ๋น„์ฟผํ„ฐ์Šค ์–˜๊ธฐ
      • ํšŒ์› ๊ด€๋ จ ์šฉ์–ด์˜ ๋‹จ์ˆœํ™”
      • Accomodation โ†’ Room ๋” ๊ฐ„๊ฒฐํ•œ ์šฉ์–ด ์‚ฌ์šฉ
 

06.20

  • ์ฃผ์„์„ ๋งŽ์ด ์ž‘์„ฑํ•˜์ž
    • ๋‚ด๊ฐ€ 1๋…„๋’ค ์ด ์ฝ”๋“œ๋ฅผ ๋ณด์•„๋„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ฒŒ
    • ๋„๋ฉ”์ธ์„ ์ „ํ˜€ ๋ชจ๋ฅด๋Š” ์‚ฌ๋žŒ์ด ๋ณด์•„๋„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ฒŒ
  • ํŠนํžˆ๋‚˜ ๋„๋ฉ”์ธ ์ฝ”๋“œ์— ๋งŽ์€ ์ฃผ์„์ด ๋“ค์–ด๊ฐ€๋Š” ๊ฒƒ์€ ์ข‹๋‹ค!
 

06.20

  • flyway ํ™œ์šฉ ์ถ”์ฒœ
 

6.24

  • ์›น๋ชจ๋ธ์—์„œ ์—”ํ‹ฐํ‹ฐ ๋ณ€ํ™˜ x. ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์„œ๋น„์Šค๋กœ ๋„˜๊ฒจ์ค˜์„œ ๊ทธ ์•ˆ์—์„œ ์—”ํ‹ฐํ‹ฐ ์ƒ์„ฑํ•˜๋Š” ์‹์œผ๋กœ
  • ํ…Œ์ด๋ธ” ๋ณ„๋กœ sql ๋”ฐ๋กœ ๋งŒ๋“ค๊ธฐ ( flyway๋กœ db ๋ฒ„์ „๊ด€๋ฆฌ)
    • create โ†’ validate
  • ๋„๋ฉ”์ธ์— ๊ธฐ๋Šฅ์„ ์ฝ”๋ฉ˜ํŠธ๋ฅผ ๊ฐ™์ด ์ž˜ ์“ฐ๊ธฐ. ๊ธฐ๋Šฅ๋“ค์— ๋Œ€ํ•ด
    • ๋ช…๋ฐฑํ•˜์ง€ ์•Š์€ ๋‚ด์šฉ๋“ค์„ ์ฃผ์„์œผ๋กœ ๋‹ฌ ๊ฒƒ
    • ๋ช…๋ฐฑํ•œ ๋‚ด์šฉ๋“ค์€ ์ฃผ์„์œผ๋กœ ๋‹ฌ์ง€ ์•Š์•„๋„ ๋จ ์ด๋Ÿฐ ์‹์œผ๋กœ ๋งํฌ ๋‹ฌ ์ˆ˜ ์žˆ์Œ /** * @see ์–ด์ฉŒ๊ณ  **/
  • Element collection โ€” Role
  • Role ํด๋ž˜์Šค ์•ˆ์— ์—ญํ•  ๋ณ„๋กœ ์–ด๋–ค ๊ธฐ๋Šฅ์„ ํ•˜๋Š”์ง€๋ฅผ ์ž‘์„ฑํ•˜๋Š” ์ฝ”๋ฉ˜ํŠธ๋ฅผ
  • member.isHost() ? ๊ฐ์ฒด ์•ˆ์— ๋“ค์–ด๊ฐ€์„œ ํ—ค์ง‘๋Š”๊ฒƒ ๋ณด๋‹ค, member.getRole.equals(Role.GUEST)
  • OneToMany(mappedBy )
  • Review๊ฐ€ ๋‹ฌ๋ ธ๋Š”๋ฐ room์˜ ์ƒํƒœ๊ฐ€ ๋ฐ”๋€Œ์–ด์•ผ ํ• ๊นŒ. reviewCount ๊ฐ™์€ ๊ฒƒ์€ ์บ์‰ฌ๋กœ ์ฒ˜๋ฆฌํ•ด๋„ ์ข‹์„ํ…๋ฐ
  • ์—ฌํ–‰ ๋„๋ฉ”์ธ์— ๊ฐ€๊ฒฉ๊ธฐ์ค€์€ ์›ํ™”(์ฝ”๋ฉ˜ํŠธ๋กœ ๋‚จ๊ธฐ๊ธฐ)
์˜ˆ์•ฝ ๋ฒ„ํŠผ ๋ˆ„๋ฆ„ -> ์˜ˆ๊ธฐ์•ฝ ์™„๋ฃŒ ๋Œ€ -> ์ฒดํฌ์•„์›ƒ ๋‘๊ฐœ๋กœ ํ•ด์„œ uq_key ๊ฑธ์Œ + ๋Œ€๊ธฐ QUEUE์— ๋„ฃ์—ˆ๋‹ค๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ํ•˜๋‚˜์”ฉ ์ฒ˜๋ฆฌ (์‹œ๊ฐ„ ์˜ค๋ฒ„๋žฉ์ด ๋˜์—ˆ๋Š”๊ฐ€?) -> ์˜ˆ์•ฝ ์™„๋ฃŒ -> ํ˜ธ์ŠคํŠธ๊ฐ€ ์ˆ˜๋ฝ (์‹œ๊ฐ„ ์˜ค๋ฒ„๋žฉ ๋˜์–ด์žˆ๋Š”๊ฒŒ ์žˆ๋Š”์ง€ ์•Œ๋ ค์ฃผ๊ธฐ)
  • ๋™์‹œ์„ฑ ๋ฌธ์ œ
    • Optimistic lock -> Version์„ ์ด์šฉ, select for update๋กœ ์ฟผ๋ฆฌ ๋ฝ ๊ฑธ๋˜๊ฐ€
    • Pessimistic lock -> db์— lock์„ ๊ฑธ์–ด๋‘๊ณ  ์žˆ๋Š” ๊ฒƒ
    • ์˜ˆ์•ฝ ๋ฒ„ํŠผ ๋ˆ„๋ฆ„ -> ์˜ˆ์•ฝ ์™„๋ฃŒ ๋Œ€๊ธฐ -> queue ์Œ“๊ณ  ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•˜๋ฉด์„œ ์˜ค๋ฒ„๋ถ€ํ‚น๋˜์—ˆ๋Š”์ง€ ํ™•์ธ -> ์˜ˆ์•ฝ ์™„๋ฃŒ
    • ์˜ˆ์•ฝ ๋ฒ„ํŠผ ๋ˆ„๋ฆ„ -> ์˜ˆ์•ฝ ์™„๋ฃŒ ๋Œ€๊ธฐ -> ํ˜ธ์ŠคํŠธ๊ฐ€ ์ˆ˜๋ฝ -> ์˜ˆ์•ฝ ์™„๋ฃŒ (์‹œ๊ฐ„ ์˜ค๋ฒ„๋žฉ ๋˜์–ด ์žˆ๋Š”๊ฒŒ ์žˆ๋Š”์ง€ ์•Œ๋ ค์ฃผ๊ธฐ)
      • ์—ฌํ–‰ ๋“ฑ๋ก ์‹œ
    • Trip์œผ๋กœ๋งŒ ์œ ์ง€ํ•˜๊ณ  ๊ฐ€๋Šฅ์€ ํ•จ
  • totalPrice
  • PasswordEncoder๋ผ๋Š” ์‹œํ๋ฆฌํ‹ฐ์˜ ์ •๋ณด๋ฅผ ๋„๋ฉ”์ธ์—์„œ ๋„ˆ๋ฌด ์•Œ๊ณ ์žˆ๋‹ค. PasswordEncryptor๋ผ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ด์šฉํ•˜๊ณ  ๊ตฌํ˜„์€ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€๋กœ ๋นผ์„œ ๊ฑฐ๊ธฐ์„œ SpringSecurity์˜ ์˜์กด์„ฑ์„
  • RoomImage โ†’ S3๋กœ
  • ์˜ˆ์•ฝ ๊ฒ€์ฆํ•˜๋Š” ํ”Œ๋กœ์šฐ
์˜ค๋ฒ„๋žฉ๋œ ์‹œ๊ฐ„์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ํ”Œ๋กœ์šฐ 1. RESERVED, TRAVELLING ์ƒํƒœ์ธ Room์˜ Trip ๋“ค์„ ๋ชจ๋‘ ๊ฐ€์ ธ์˜จ๋‹ค 2. checkin, checkout ์‚ฌ์ด์˜ ๋‚ ์งœ๋“ค์„ list ํ˜•ํƒœ๋กœ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๋‹ค. 3. ํ˜„์žฌ ์˜ˆ์•ฝ์˜ checkin, checkout ๊ณผ ๊ฒน์น˜๋Š” ๋‚ ์งœ๊ฐ€ ์žˆ๋Š”์ง€ ๊ฒ€์‚ฌํ•œ๋‹ค. -> stream().anyMatch() ์ด๋Ÿฐ๊ฑฐ ํ™œ์šฉํ•˜๋ฉด ๋ ๊ฑฐ๊ฐ™์Œ 4. ํ•˜๋‚˜๋ผ๋„ ์žˆ์œผ๋ฉด, checkArguments ํ„ฐ์ง€๋ฉด ๋ ๋“ฏ ์—ฌํ–‰ํ•˜๋ ค๋Š” ๋ฃธํ•˜๋‚˜ ์กฐํšŒ 1. RESERVED, TRAVELLING ์ƒํƒœ์ธ Room์˜ Trip ๋“ค์„ ๋ชจ๋‘ ๊ฐ€์ ธ์˜จ๋‹ค 2. checkin, checkout ์‚ฌ์ด์˜ ๋‚ ์งœ๋“ค์„ list ํ˜•ํƒœ๋กœ merge ํ•ด์„œ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๋‹ค 3. list๋ฅผ ๊ฐ™์ด ๋ฟŒ๋ ค์ค˜์„œ ํ™”๋ฉด์—์„œ ์˜ˆ์•ฝ๋œ ์‹œ๊ฐ„์€ ์ŠคํŠธ๋ผ์ดํฌ ์ฒ˜๋ฆฌ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋‚ด๋ ค์ค€๋‹ค.
  • Address
    • ๋‚ด๋ถ€ String address โ†’ description, postcode, road Addressโ€ฆ
  • ofReserved ๊ฐ€ ํ•„์š”์—†๋‹คโ€ฆ.
  • ํ…Œ์ŠคํŠธ์— TripStatus ๋ณ€๊ฒฝํ…Œ์ŠคํŠธ โ†’ Parameterizeโ€ฆ
    6.25
    • application.yaml์— ๊ฐ’๋“ค ํ™˜๊ฒฝ๋ณ€์ˆ˜๋กœ ๋นผ์„œ ๋Œ๋ฆฌ๊ธฐ
    • ์ปค๋ฐ‹ ํ›…์œผ๋กœ reformat code, optimize import. ์ ์šฉํ•˜๊ธฐ