2021-05-13(Thu)

์„ฑ์˜ ๐Ÿ‘ ๊ฐ์ฒด ์ง€ํ–ฅ๊ณผ ์ข€ ๋” ์นœํ•ด์ง„ ๋‚ 

Facts (์‚ฌ์‹ค, ๊ฐ๊ด€)

  • Entity์— ๋Œ€ํ•ด ์ฐพ์•„๋ณด๋ฉฐ ์˜ค์ „์„ ๋ณด๋ƒˆ๋‹ค.

  • 'ํ’๋ฅ˜์‹œ์ธ'๋‹˜์˜ ์‹œํ์–ด ์ฝ”๋”ฉ ํŠน๊ฐ•์„ ๋“ค์—ˆ๋‹ค.

  • ์ด๋ฒคํŠธ๋กœ ๋‚˜์˜จ SQL ๋ฌธ์ œ๋ฅผ ํ’€๋ ค๋‹ค๊ฐ€ ์‹คํŒจํ–ˆ๋‹ค.

  • ์ง€๊ธˆ๊นŒ์ง€ ๋ฐฐ์šด ๋‚ด์šฉ์„ ๋ฐ”ํƒ•์œผ๋กœ ์Šคํ”„๋ง 1์ฃผ์ฐจ ๊ณผ์ œ๋ฅผ ๊ฐ์ฒด ์ง€ํ–ฅ์ ์œผ๋กœ ๋ฆฌํŒฉํ† ๋งํ•˜์˜€๋‹ค.

  • ์Šคํ”„๋ง 2์ฃผ์ฐจ ๊ณผ์ œ์˜ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ”ํƒ•์œผ๋กœ ์ˆ˜์ • ์ง„ํ–‰ํ–ˆ๋‹ค.

Feelings (๋Š๋‚Œ, ์ฃผ๊ด€)

  • DB์—์„œ์˜ Entity๋Š” ๋ฌด์—‡์ด๋‹ค! ๋ผ๊ณ  ์ ํ˜€์žˆ๋Š” ๋ ˆํผ๋Ÿฐ์Šค๋Š” ์‰ฝ๊ฒŒ ์ฐพ์•˜๋‹ค. ๋ฌธ์ œ๋Š” OOP์—์„œ์˜ Entity๋Š” ๋ฌด์—‡์ด๋‹ค! ๋ผ๊ณ  ์ ํ˜€์žˆ๋Š”๊ฑธ ์ฐพ์„ ๋•Œ ๋ฐœ์ƒํ–ˆ๋‹ค. ๊ฐ ๋ ˆํผ๋Ÿฐ์Šค๊ฐ€ OOP์—์„œ์˜ Entity๋ฅผ ์–˜๊ธฐํ•˜๋Š”๊ฑด์ง€ ์•„๋‹ˆ๋ฉด Spring์—์„œ ์“ฐ์ผ ๋•Œ์˜ Entity๋ฅผ ๋งํ•˜๋Š” ๊ฑด์ง€, ์•„๋‹ˆ๋ฉด DDD?์—์„œ ์“ฐ์ด๋Š” Entity๋ฅผ ์–˜๊ธฐํ•˜๋Š”๊ฑด์ง€, ์•„๋‹ˆ๋ฉด ์ด๊ฒŒ ๋‹ค ๊ฐ™์€๊ฑด์ง€ ํ—ท๊ฐˆ๋ ธ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์‚ฌ์‹ค ์•„์ง๋„ ํ—ท๊ฐˆ๋ฆฐ๋‹ค. ์ด ์ฃผ์ œ๋Š” ์ฃผ๋ง์— ๋” ํŒŒ๋ด์•ผ๊ฒ ๋‹ค. ๊ทธ๋ž˜๋„ ๋‹คํ–‰์ธ๊ฑด ๋‚ด๊ฐ€ ๋ชจ์ž๋žŒ์„ ๋“œ๋Ÿฌ๋‚ด๋ฉด ๊ธฐ๊บผ์ด ์ง€์ ํ•ด์ฃผ๋Š” ์„ ๋ฐฐ ๊ฐœ๋ฐœ์ž๋ฅผ ๋งŒ๋‚ฌ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ ๊ธˆ ๊นจ์„œ ์ฝ”๋“œ์ˆจ ์‹œ์ž‘ํ•œ ๋ณด๋žŒ์ด ๋“œ๋Š” ๋Œ€๋ชฉ์ธ ๊ฒƒ ๊ฐ™๋‹ค.

  • ์‹œํ์–ด ์ฝ”๋”ฉ ํŠน๊ฐ•์€ ์ฝ”๋“œ ๋ ˆ๋ฒจ์—์„œ์˜ ์†Œ์†Œํ•œ ํŒ, SQL injection ๋ฐฉ์–ด๊นŒ์ง€๋Š” ์žฌ๋ฐŒ๊ฒŒ ๋“ค์—ˆ๋Š”๋ฐ, ์ดํ›„์—๋Š” ๋„ˆ๋ฌด ๋น ๋ฅด๊ฒŒ ์ง„ํ–‰๋˜์–ด์„œ ๋จธ๋ฆฌ์— ์ œ๋Œ€๋กœ ๋„ฃ์ง€ ๋ชปํ•œ ๊ฒƒ ๊ฐ™๋‹ค. ์ด๋Ÿฐ๊ฑด ์ž์ฃผ ์ ‘ํ•ด์„œ ๋ชธ์— ๋ฐฐ๊ฒŒ ํ•ด์•ผํ•  ๊ฒƒ ๊ฐ™๋‹ค.

  • SQL ๋ฌธ์ œ๋ฅผ ํ’€๋ ค๋‹ค๊ฐ€ ์‹คํŒจํ–ˆ๋‹ค. ํ  ์ „์— ๋‚˜๋ฆ„ ํ•™์Šตํ–ˆ๋Š”๋ฐ๋„ ์•„์ง๋„ ์†์— ์ต์ˆ™์น˜๊ฐ€ ์•Š๋‹ค. ๊ทธ๋ฆฌ๊ณ  sql mode only full group by ๋•๋ถ„์— GROUP BY ์—์„œ๋ถ€ํ„ฐ ์†์ˆ˜๋ฌด์ฑ…์œผ๋กœ ๋ง‰ํ˜€๋ฒ„๋ฆฐ๊ฑธ ๋ณด๋ฉด ๊ฐ€์•ผํ•  ๊ธธ์ด ๋ฉ€๋‹ค.

  • ์ง€๊ธˆ ์‹œ๊ฐ„ 3์‹œ.. ๋ฒผ๋ฅด๋˜ 1์ฃผ์ฐจ ๊ณผ์ œ ๋ฆฌํŒฉํ† ๋ง์„ ์ผ๋‹จ๋ฝํ•˜๊ณ  ๋‚˜๋‹ˆ ํ›„๋ จ + ๋ฟŒ๋“ฏํ•˜๋‹ค. 1์ฃผ์ฐจ ๊ณผ์ œ๋Š” ์•„๋ฌด๋ž˜๋„ Java๋กœ ๋ญ”๊ฐ€ ๋งŒ๋“ ๊ฑด ์ฒ˜์Œ์ธ๋ฐ๋‹ค๊ฐ€ ์ตœ์ดˆ์— ๊ฐ์ฒด์ง€ํ–ฅ์„ ์˜์‹ํ•˜์ง€ ์•Š๊ณ  ์งฐ๋˜ ์ฝ”๋“œ์ด๋‹ค๋ณด๋‹ˆ ์•…์ทจ๊ฐ€ ์žฅ๋‚œ์ด ์•„๋‹ˆ์—ˆ๋‹ค. ๋‚˜๋ฆ„๋Œ€๋กœ ์Šค์œ„์น˜๋ฌธ, enum์„ ์จ๊ฐ€๋ฉฐ ์ •๋ฆฌํ–ˆ์—ˆ์ง€๋งŒ ๋„˜๋‚˜ ๋ณต์žกํ•œ ๊ตฌ์กฐ์˜€๋‹ค. ๊ฑฐ์˜ C + ๊ตฌ์กฐ์ฒด ์ •๋„๋กœ๋งŒ ์งœ์—ฌ์ง„ ์ฝ”๋“œ ๋Š๋‚Œ? ์ด์ œ์‚ฌ ์ž์ถ•ํ•˜๊ฑด๋ฐ ๊น”๋”ํ•ด์ง„ ๊ฒƒ ๊ฐ™๋‹ค.

  • ์•„์ง switch ๋ฌธ์— ๋‚จ์•„์žˆ์–ด์„œ ์ข€ ๋” ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์„ ๊ฒƒ๋„ ๊ฐ™๊ณ , ๋™์‹œ์„ฑ์ด ๊ณ ๋ ค๊ฐ€ ์•ˆ๋˜์–ด์„œ ์—ญ์‹œ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค. ์ด ๋ถ€๋ถ„๋„ ํ•™์Šตํ•ด์„œ ์ข€ ๋” ๋ฆฌํŒฉํ† ๋งํ•ด๋ด์•ผ์ง€.

  • ํ .. ์ฝ”๋“œ ์ž์ฒด์˜ ํ”ผ๋“œ๋ฐฑ์ด ๋งŽ์ง€ ์•Š์•„์„œ ์•„์‰ฝ๋‹ค. ๋ญ”๊ฐ€ ์šฐํ…Œ์ฝ” ์• ๋“ค์ฒ˜๋Ÿผ ๊ฐ€์—ด์ฐฌ ํ”ผ๋“œ๋ฐฑ์„ ์ฃผ๊ณ ๋ฐ›๊ณ  ์‹ถ์—ˆ๋Š”๋ฐ ์•„์ง ๋‚ด๊ฐ€ ๋„˜๋‚˜ ์–•์•„์„œ ํ”ผ๋“œ๋ฐฑํ•  ๊ฑฐ๋ฆฌ๊ฐ€ ์—†๋Š” ๊ฒƒ์ด๊ฒ ์ง€? ํŒ ์ฃผ๋Š” ๋ง›์ด ๋‚˜๊ฒŒ ์ซ™์ซ™ ํ•™์Šตํ•ด๋ณด์ž. ๊ทธ๋ฆฌ๊ณ  PR์— ์ ์€ ์งˆ๋ฌธ์— ๋‹ต์„ ๋ฐ›์ง€ ๋ชป ํ–ˆ๋Š”๋ฐ, ๋‚ด์ผ์€ ์ด ๋ถ€๋ถ„์„ ์—ฌ์ญค๋ด์•ผ๊ฒ ๋‹ค.

Findings (๋ฐฐ์šด ์ )

  • spring-boot-devtools์„ ์ถ”๊ฐ€ํ–ˆ์Œ์—๋„ ์†Œ์Šค์ฝ”๋“œ ๋ณ€๊ฒฝ์‹œ restart๋˜์ง€ ์•Š์•˜๋‹ค. ์ด ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ํ•ด๊ฒฐํ•˜์˜€๋‹ค!

  • intelij์—์„œ ์ขŒ์šฐ split ์ด๋™์€ alt + tap์œผ๋กœ ํ•œ๋‹ค.

  • header๋ฅผ ๋ณด๋‚ธ exchange์— ๋˜ header๋ฅผ ๋ณด๋‚ด๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋˜์ ธ์ง„๋‹ค.

  • ๊ฐ์ฒด ์ง€ํ–ฅ์ ์œผ๋กœ ๊ฐ์ฒด๋ฅผ ์“ฐ๋ ค๋ฉด ๋‹คํ˜•์„ฑ์„ ์ด์šฉํ•ด์•ผํ•˜๊ณ  ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๊ต‰์žฅํžˆ ์œ ์šฉํ•˜๋‹ค.

Affimation (์ž๊ธฐ ์„ ์–ธ)

  • ์˜ค๋Š˜๋„ ์ž๊ธฐ ์ „์— ๋ฟŒ๋“ฏํ•œ ํ•˜๋ฃจ๋ฅผ ๋งŒ๋“ ๋‹ค.

  • ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ํ•™์Šต์‹œ๊ฐ„์„ ํ™•๋ณดํ•˜๊ณ  ์‹ค์ œ๋กœ ํ•™์Šตํ•œ๋‹ค.

Last updated