๋ชฉ๋ก๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (181)

๐ŸŒฑ → ๐ŸŒณ

LabLink ํ”„๋กœ์ ํŠธ ํšŒ๊ณ 

๋ชฉ์ฐจ ๋‚˜๋Š” ๋ฌด์—‡์„ ํšŒ๊ณ ํ•˜๋Š”๊ฐ€ ๋‚˜์—๊ฒŒ ์นญ์ฐฌํ•œ๋‹ค (Keep) ๊ธฐ์ˆ ์ ์ธ ๋ฐฐ์›€ ๋ฌด์—‡์ด ๋ฌธ์ œ์˜€๋Š”๊ฐ€? (Problem) ๋‹ค์Œ ํ”„๋กœ์ ํŠธ์—์„œ๋Š”? (Try) ๐Ÿ“Œ ๋‚˜๋Š” ๋ฌด์—‡์„ ํšŒ๊ณ ํ•˜๋Š”๊ฐ€ 6์ฃผ๊ฐ„์˜ ํ”„๋กœ์ ํŠธ๊ฐ€ ๋ง‰์„ ๋‚ด๋ ธ์Šต๋‹ˆ๋‹ค ๊ธฐํš๋„ ์šฐ๋ฆฌ๊ฐ€ ํ•˜๊ธฐ๋„ ํ–ˆ๊ณ  6์ฃผ๋ผ๋Š” ๊ธด ์‹œ๊ฐ„๋™์•ˆ ํ˜‘์—… ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•ด์„œ ๊ทธ๋Ÿฐ์ง€ ์• ์ •์ด ๋งŽ์ด ๊ฐ€๋Š” ํ”„๋กœ์ ํŠธ ์˜€์–ด์š” .. ๊ณ„ํš์€ ์—„์ฒญ ์ฐฝ๋Œ€ํ–ˆ๊ตฌ๋‚˜ .. ์‹œ๊ฐ„์ด๋ผ๋Š” ์ž์›์˜ ํ•œ๊ณ„๋กœ .. ๋งŽ์€ ๊ธฐ๋Šฅ์„ ํฌ๊ธฐํ•˜๊ธด ํ–ˆ์ง€๋งŒ ๊ทธ๋ž˜๋„ ์œ ์ € ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตํ•ด์„œ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›์•„๋ณด์•˜์„ ๋•Œ ํŠนํžˆ ๋””์ž์ด๋„ˆ๋ถ„์ด๋‚˜ ๊ฐœ๋ฐœ์ž ๋ถ„๋“ค์ด ์žˆ์œผ๋ฉด ๋„ˆ๋ฌด ์ข‹์„ ๊ฒƒ ๊ฐ™์€ ์„œ๋น„์Šค๋ผ๊ณ  ํ•ด์ค˜์„œ ๊ธฐ๋ปค๋˜ ๊ธฐ์–ต์ด ๋‚จ๋‹ˆ๋‹ค .. ํ˜ธํ˜ธ ๐Ÿ“Œ ๋‚˜์—๊ฒŒ ์นญ์ฐฌํ•œ๋‹ค (Keep) 6์ฃผ.. ์ž๊พธ 6์ฃผ ์ด์•ผ๊ธฐ๋ฅผ ํ•ด์„œ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค… ๊ทผ๋ฐ ์ƒ๊ฐ๋ณด๋‹ค ์ด๊ฒŒ ๊ฝค๋‚˜ ๊ธด ์‹œ๊ฐ„์ด๋”๋ผ๊ณ ์š” ๋˜ ์ด๊ฒŒ ๊ทธ๋ƒฅ 6..

Project 2023. 5. 24. 12:24
[Spring] save() vs saveAndFlush()

Spring ํ”„๋ ˆ์ž„์›Œํฌ์˜ JPA(Java Persistense API)๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ, ์—”ํ‹ฐํ‹ฐ๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•  ๋•Œ save()์™€ saveAndFlush() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๐Ÿ“save() ์—”ํ‹ฐํ‹ฐ๋ฅผ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์— ์ €์žฅํ•˜๊ณ , ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•˜๋Š” ์ž‘์—…์„ ์ง€์—ฐ์‹œํ‚ด ์ฆ‰, ํŠธ๋žœ์žญ์…˜์ด ์ปค๋ฐ‹๋˜๊ธฐ ์ „๊นŒ์ง€ ์—”ํ‹ฐํ‹ฐ๋Š” ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์—๋งŒ ์กด์žฌํ•˜๊ฒŒ ๋จ ์ด ๋•Œ๋ฌธ์— save() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ด๋„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฐ˜์˜๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค. ๐Ÿ“saveAndFlush() ์—”ํ‹ฐํ‹ฐ๋ฅผ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์— ์ €์žฅํ•˜๊ณ , ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฐ”๋กœ ์ €์žฅํ•˜๋Š” ์ž‘์—… ์ˆ˜ํ–‰ ์ฆ‰, saveAndFlush() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ๋ฐ”๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์—”ํ‹ฐํ‹ฐ๊ฐ€ ๋ฐ˜์˜๋จ ์ด ๋•Œ๋ฌธ์— saveAndFlush() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฐ˜์˜๋˜๋Š” ์‹œ์ ์„ ๋”..

Server/Java & Spring 2023. 3. 22. 10:30
[Spring] IoC, DI๋ž€?

IoC(Inversion of Control)๋ž€? IoC๋Š” Inversion of Control์˜ ์ค„์ž„ ๋ง๋กœ, ์ œ์–ด์˜ ์—ญ์ „์ด๋ผ๋Š” ๋œป์ด๋‹ค. ํ”„๋กœ๊ทธ๋žจ์˜ ํ๋ฆ„์„ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ œ์–ดํ•˜์ง€ ์•Š๊ณ , ํ”„๋กœ๊ทธ๋žจ์ด๋‚˜ ํ”„๋ ˆ์ž„์›ค์ด ์ง์ ‘ ์ œ์–ด๋ฅผ ํ•œ๋‹ค๋Š” ๋ง์ด๋‹ค. ์ปดํฌ๋„ŒํŠธ์˜ ์˜์กด ๊ด€๊ณ„ ๊ฒฐ์ •(Component dependency resolution), ๊ฐ์ฒด์˜ ์ƒ๋ช… ์ฃผ๊ธฐ(life cycle)์™€ ๊ฐ™์€ ์ผ์„ ๋Œ€์‹  ์ˆ˜ํ–‰ํ•ด์ค€๋‹ค. ํ”ํžˆ ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›ค์„ ์ด์šฉํ•ด์„œ ๊ฐœ๋ฐœํ•  ๋•Œ ์—ฌ๋Ÿฌ๊ฐ€์ง€ Bean์„ ์‚ฌ์šฉ ํ•  ๊ฒƒ์ด๋‹ค. ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด, ์š”์ฒญ์— ์•Œ๋งž์€ Bean์„ ์ƒ์„ฑํ•ด์„œ ํ•„์š”ํ•œ ์ผ์„ ํ•˜๋„๋ก ์‹œํ‚จ๋‹ค. ํ•ด๋‹น Bean์ด ํ•  ์ผ์„ ๋งˆ์น˜๋ฉด Bean์„ ์‚ญ์ œํ•ด์ค€๋‹ค. ํ•˜์ง€๋งŒ ์ด๋Ÿฐ ๊ฐ์ฒด์˜ ์ƒ์„ฑ๊ณผ ์†Œ๋ฉธ์ด ์–ด๋–ป๊ฒŒ ์ด๋ฃจ์–ด์ง€๋Š”์ง€ ์•Œ ํ•„์š”๊ฐ€ ์—†๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ง์ ‘ ์ œ์–ด ํ• ..

Server/Java & Spring 2023. 3. 22. 10:21
[Spring] ์˜์กด์„ฑ ์ฃผ์ž…(Dependency Injection)์—์„œ final ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

private final ProductService productservice ๋ฌธ๋“ ์˜์กด์„ฑ ์ฃผ์ž…์„ ํ•˜๋‹ค๊ฐ€ final์„ ์จ์ฃผ๋Š” ์ด์œ ๊ฐ€ ๊ถ๊ธˆํ•ด์กŒ๋‹ค . ์˜์กด์„ฑ ์ฃผ์ž…(Dependency Injection)์—์„œ final ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ๋ถˆ๋ณ€์„ฑ(Immutability) final ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•ด๋‹น ๋ณ€์ˆ˜๊ฐ€ ํ•œ ๋ฒˆ ์ดˆ๊ธฐํ™”๋œ ์ดํ›„์—๋Š” ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๊ฒŒ ๋œ๋‹ค. ์ด๋Š” ๊ฐ์ฒด์˜ ์ƒํƒœ๋ฅผ ๋ถˆ๋ณ€ํ•˜๊ฒŒ ์œ ์ง€ํ•˜๊ณ , ๊ฐ์ฒด์˜ ๋ถˆ๋ณ€์„ฑ(Immutability)์„ ๋ณด์žฅํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋œ๋‹ค. ์˜์กด์„ฑ ์ฃผ์ž…์—์„œ๋Š” ์ฃผ์ž…๋œ ๊ฐ์ฒด์˜ ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— final ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ์ฒด์˜ ๋ถˆ๋ณ€์„ฑ์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. ์•ˆ์ •์„ฑ(Safety) final ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋ณ€์ˆ˜์˜ ์ดˆ๊ธฐํ™” ์—ฌ๋ถ€๋ฅผ..

Server/Java & Spring 2023. 3. 22. 10:17
[WIL] 2023/02/27~2023/03/05

โœ๏ธ ์ •๋ฆฌํ•˜๊ธฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋Œ€ํ•™์ƒ ์—ฐํ•ฉ ๋™์•„๋ฆฌ ์„œ๋ฅ˜ ์ œ์ถœ Spring ์ž…๋ฌธ ๋ฐ ์ˆ™๋ จ ๊ฐ•์˜ TIL ๋ ˆํฌ ์ƒ์„ฑ ๋ฐ ์ž‘์„ฑ ์‹œ์ž‘ Java ์Šคํ„ฐ๋””(์ปค๋ฉ˜๋“œ ํŒจํ„ด) ๐Ÿ’ญ ํšŒ๊ณ ํ•˜๊ธฐ Spring์„ ํ†ตํ•ด ์„œ๋ฒ„ ๊ฐœ๋ฐœ ์ „์ฒด ํ๋ฆ„์„ ์‚ดํŽด ๋ณผ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๋กœ๊ทธ์ธ ๋กœ์ง์ด๋‚˜ ํŽ˜์ด์ง€๋„ค์ด์…˜ ๋“ฑ ๋ฐฐ์› ์ง€๋งŒ ์•„์ง ์ฝ”๋“œ๋กœ ์•ˆ์ณ๋ด์„œ ์•„์ง ๋ฏธ์ˆ™ํ•˜๋‹ค! ๊ผญ ์ง์ ‘ ์ฝ”๋”ฉํ•ด๋ณด๊ธฐ ์ œ์ผ ์šฐ์„ ์ˆœ์œ„๊ฐ€ spring์ด๋ผ๋Š” ๊ฑธ ์žŠ์ง€๋ง์ž til ๊ผญ ์ž‘์„ฑํ•˜์ž Java ์Šคํ„ฐ๋”” (์ปค๋ฉ˜๋“œ ํŒจํ„ด) ์Šคํ”„๋ง์„ ๋ฐฐ์šฐ๋‹ค๊ฐ€ ๋˜ ์ž๋ฐ”๋ฅผ ํ•˜๋ ค๋‹ˆ ๋„ˆ๋ฌด ์–ด์ƒ‰ํ•˜๊ณ  ์–ด๋ ค์› ๋‹ค java์˜ ๊ธฐ๋ฐ˜์ด ์ž˜ ๋‹ค๋“ฌ์–ด์ ธ ์žˆ์ง€ ์•Š์•„์„œ ๊ทธ๋Ÿฐ ๊ฒƒ ๊ฐ™๋‹ค … public, fina, enum, ์ œ๋„ค๋ฆญ ๋“ฑ .. ์•„์ง ๋ฐฐ์›Œ์•ผ ํ• ๊ฒŒ ๋งŽ๋‹ค ์‹œ๊ฐ„ ํˆฌ์ž๋ฅผ ๋” ๋งŽ์ด ํ•ด์•ผํ•  ๋“ฏ ใ…œ ๊ทธ๋ฆฌ๊ณ  ๋Œ€์ถฉ ๋„˜์–ด๊ฐ€์ง€ ๋ง๊ณ  ๊ตฌ๊ธ€๋ง ๊ผญ ํ•˜๊ณ  ์ดํ•ดํ•˜๊ณ  ๋„˜์–ด๊ฐ€์ž..

TIL 2023. 3. 6. 12:28