๋ชฉ๋กServer (50)

๐ŸŒฑ → ๐ŸŒณ

[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
[Java] Java์˜ ๋“ฑ์žฅ

์–ด์…ˆ๋ธ”๋ฆฌ : ๊ธฐ๊ณ„ ๋ช…๋ น์–ด์™€ ์ผ์ƒ ์šฉ์–ด๋ฅผ ์ผ๋Œ€์ผ๋กœ ๋งค์นญํ•˜๋Š” ๊ธฐ๊ณ„์–ด์™€ ๋‹ˆ๋ชจ๋‹‰์˜ ๋งค์นญ ์ฝ”๋“œํ‘œ CPU ๋งˆ๋‹ค ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๊ณ„์–ด๊ฐ€ ๋‹ฌ๋ž๊ธฐ ๋•Œ๋ฌธ์— ์–ด์…ˆ๋ธ”๋ฆฌ์–ด๋„ ๋‹ค๋ฅด๊ฒŒ ๋งŒ๋“ค์–ด ์ฃผ์—ˆ์Œ ์–ด์…ˆ๋ธ”๋Ÿฌ : ์–ด์…ˆ๋ธ”๋ฆฌ์–ด๋ฅผ ๊ธฐ๊ณ„์–ด๋กœ ๋ฒˆ์—ญํ•ด ์ฃผ๋Š” ์†Œํ”„ํŠธ์›จ์–ด C์–ธ์–ด์˜ ๋“ฑ์žฅ ์–ด์…ˆ๋ธ”๋ฆฌ์–ด๋กœ ๊ฐœ๋ฐœ์„ ํ•  ๋•Œ๋Š” ๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์†Œ์Šค ํŒŒ์ผ์„ ๊ฐ ๊ธฐ๊ณ„์˜ ์ข…๋ฅ˜๋งŒํผ ๋งŒ๋“ค์–ด์•ผ ํ–ˆ์ง€๋งŒ C์–ธ์–ด์˜ ๋“ฑ์žฅ์œผ๋กœ ์†Œ์ŠคํŒŒ์ผ์„ ๋‹จ ํ•˜๋‚˜๋งŒ ๋งŒ๋“ค์–ด๋„ ๋˜๋Š” ์‹œ๋Œ€๊ฐ€ ๋˜์—ˆ์Œ ํ•˜์ง€๋งŒ, ์šด์˜์ฒด์ œ๋“ค์˜ ๊ฐ ํŠน์„ฑ๋ณ„๋กœ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•ด์•ผํ•˜๋Š” ์ƒํ™ฉ ๋ฐœ์ƒ Java์˜ ๋“ฑ์žฅ Java๋Š” ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด (Class) ๋‹จ ํ•˜๋‚˜์˜ ์†Œ์Šค ํŒŒ์ผ๋กœ ๋ชจ๋“  ๊ธฐ์ข…์˜ ์ปดํ“จํ„ฐ์—์„œ ์‹คํ–‰ ๊ฐ€๋Šฅ ๐Ÿ’ก ์ปดํŒŒ์ผ์ด๋ž€? ์‚ฌ๋žŒ์ด ์ดํ•ดํ•˜๋Š” ์–ธ์–ด๋ฅผ ์ปดํ“จํ„ฐ๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์–ธ์–ด๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ๊ณผ์ • ์ฃผ์–ด์ง„ ์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ..

Server/Java & Spring 2023. 2. 14. 18:11
[node.js] Session์œผ๋กœ ๋กœ๊ทธ์ธ ๊ตฌํ˜„ํ•˜๊ธฐ

๐Ÿ“Œ session : ์„œ๋ฒ„์˜ ์ฟ ํ‚ค ๐Ÿ“ HTTP Session ์ด๋ž€? ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์•„๋‹Œ ์„œ๋ฒ„์— ์ €์žฅ๋˜๋Š” ์ฟ ํ‚ค ์‚ฌ์šฉ์ž๊ฐ€ ์„œ๋ฒ„์— ์ ‘์†ํ•œ ์‹œ์ ๋ถ€ํ„ฐ ์—ฐ๊ฒฐ์„ ๋๋‚ด๋Š” ์‹œ์ ์„ ํ•˜๋‚˜์˜ ์ƒํƒœ๋กœ ๋ณด๊ณ  ์œ ์ง€ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ํ•จ -> ๋กœ๊ทธ์ธ ์œ ์ง€ ์„œ๋ฒ„๋Š” ๊ฐ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ์„ธ์…˜์„ ๋ฐœํ–‰ํ•˜๊ณ  ์„œ๋ฒ„๋กœ ์ ‘๊ทผ(request)ํ•œ ์‚ฌ์šฉ์ž๋ฅผ ์‹๋ณ„ํ•˜๋Š” ๋„๊ตฌ๋กœ ์‚ฌ์šฉ ์ฟ ํ‚ค์™€ ๋‹ฌ๋ฆฌ ์ €์žฅ ๋ฐ์ดํ„ฐ์— ์ œํ•œ ์—†์Œ ๋งŒ๋ฃŒ ๊ธฐ๊ฐ„ ์„ค์ •์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ๋ฐ”๋กœ ์‚ญ์ œ ๐Ÿ“HTTP Session์˜ ๋™์ž‘ ๋ฐฉ์‹ ์‚ฌ์šฉ์ž๊ฐ€ ์ตœ์ดˆ๋กœ ์„œ๋ฒ„ ์—ฐ๊ฒฐ์„ ํ•˜๋ฉด ํ•˜๋‚˜์˜ session-id(์ž„์˜์˜ ๊ธด ๋ฌธ์ž์—ด)๊ฐ€ ๋ฐœํ–‰ ๋ฐœํ–‰ ๋œ session-id๋Š” ์„œ๋ฒ„์™€ ๋ธŒ๋ผ์šฐ์ €์˜ ๋ฉ”๋ชจ๋ฆฌ์— ์ฟ ํ‚ค ํ˜•ํƒœ๋กœ ์ €์žฅ๋จ ์„œ๋ฒ„๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์„œ๋ฒ„์— ์ ‘๊ทผ ์‹œ, ์ฟ ํ‚ค์— ์ €์žฅ๋œ session-id๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ณ  ..

Server/Node.js 2022. 9. 24. 17:43
[node.js] Cookie - ํŒ์—… ์ฐฝ ํ•˜๋ฃจ๋™์•ˆ ๋ณด์ง€ ์•Š๊ธฐ

๐Ÿ“Œ Cookie : HTTP ์ฟ ํ‚ค๋Š” ์„œ๋ฒ„๊ฐ€ ์‚ฌ์šฉ์ž์˜ ์›น ๋ธŒ๋ผ์šฐ์ €์— ์ „์†กํ•˜์—ฌ ์ €์žฅํ•˜๋Š” ์ž‘์€ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ JS์˜ ๊ฐ์ฒด์ฒ˜๋Ÿผ key ๊ฐ’๊ณผ, data๊ฐ€ ๋“ค์–ด ์žˆ์Œ ๋ธŒ๋ผ์šฐ์ €๋Š” ์ฟ ํ‚ค๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ด ๋‘์—ˆ๋‹ค๊ฐ€, ๋™์ผํ•œ ์„œ๋ฒ„์— ๋‹ค์‹œ ์š”์ฒญ์„ ๋ณด๋‚ด๊ฒŒ ๋  ๋•Œ ์ฟ ํ‚ค์— ์ €์žฅ๋œ ์ •๋ณด๋ฅผ ํ•จ๊ป˜ ์ „์†ก ์„œ๋ฒ„์—์„œ๋Š” ์ฟ ํ‚ค๋ฅผ ํ†ตํ•ด ์š”์ฒญ์ด ์–ด๋–ค ๋ธŒ๋ผ์šฐ์ €์— ๋“ค์–ด์™”๋Š”์ง€(ํ˜น์€ ์š”์ฒญ์ด ๋™์ผํ•œ ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋“ค์–ด์™”๋Š”์ง€) ๋“ฑ์„ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Œ ์„œ๋ฒ„์— ์ €์žฅํ•ด์•ผ ํ•  ์ •๋ณด๋ฅผ ๊ด€๋ฆฌ -> ๋กœ๊ทธ์ธ ์ •๋ณด, ์žฅ๋ฐ”๊ตฌ๋‹ˆ, ํŒ์—… ํ•˜๋ฃจ ๋™์•ˆ ์•ˆ ๋ณด๊ธฐ ๋“ฑ ์ค‘์š”ํ•œ ์ •๋ณด(์ด๋ฆ„, ๋ฐ์ดํ„ฐ, ๋งŒ๋ฃŒ์ผ, ๊ฒฝ๋กœ ๋“ฑ)๋Š” ๋กœ์ปฌ์— ๋‚จ๊ฒŒ ๋˜๋ฏ€๋กœ ์ ˆ๋Œ€ ์ €์žฅํ•ด์„œ๋Š” ์•ˆ๋จ โœ… Cookie์˜ ๋™์ž‘ ๋ฐฉ์‹ โœ… ํ”„๋ก ํŠธ์—์„œ ์ฟ ํ‚ค ์‚ฌ์šฉํ•˜๊ธฐ (์‚ฌ์šฉ X, ํŽธ๋ฒ•) document.cookie๋กœ ์‚ฌ์šฉ expires๊ฐ’๊ณผ ๋ธŒ..

Server/Node.js 2022. 9. 24. 15:49
[MongoDB] mongoDB(์ •์˜, ๊ตฌ์กฐ, ํŒจํ‚ค์ง€ ์„ค์น˜ ๋ฐ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•)

๐Ÿ“Œ MongoDB(Humongous DB) ์žฅ์  data๋ฅผ ์ต์ˆ™ํ•œ JSON ํ˜•ํƒœ๋กœ ์ฒ˜๋ฆฌ -> ๋น ๋ฅด๊ฒŒ JSON ์ „ํ™˜ ๊ฐ€๋Šฅ DB ๊ตฌ์กฐ์˜ ๋ณ€๊ฒฝ ์šฉ์ด ์ œ์•ฝ์ด ์—†์Œ -> ๋†’์€ ์ˆ˜ํ‰ ํ™•์žฅ์„ฑ, ์Šคํ‚ค๋งˆ ์„ค๊ณ„์˜ ์œ ์—ฐ์„ฑ ๋‹จ์  ํ‘œ์ค€์ด ์—†์Œ(= ์ œ์•ฝ์ด ์—†์Œ) ๋ฐ์ดํ„ฐ๊ฐ€ ๊ตฌ์กฐํ™” ๋˜์–ด์žˆ์ง€ ์•Š์Œ ๋‹จ์ˆœํ•œ ๊ตฌ์กฐ์˜ ์ฟผ๋ฆฌ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ ๋ฐ ์•ˆ์ •์„ฑ์„ DB๊ฐ€ ์•„๋‹Œ APP ๋ ˆ๋ฒจ์—์„œ ๊ด€๋ฆฌํ•ด์ค˜์•ผ ํ•จ -> ๋ฒ„๊ทธ ๋ฐœ์ƒ ํ™•๋ฅ  ๋†’์Œ โœ… MongoDB์˜ ๊ตฌ์กฐ โœ… MongoDB ํŒจํ‚ค์ง€ ์„ค์น˜ mongoDB์šฉ js ํŒŒ์ผ ์ƒ์„ฑ routes/mongo.js ํŒŒ์ผ ์ƒ์„ฑ npm i mongodb ๐Ÿ“ mongo.js ํŒŒ์ผ ์‹คํ–‰ node routes/mongo.js ์•„๋ฌด๋Ÿฐ ๋ฉ”์‹œ์ง€๊ฐ€ ์•ˆ๋œจ๋ฉด ์ •์ƒ์ ์œผ๋กœ ์ ‘์†์ด ๋œ ๊ฒƒ ๐Ÿ“ MongoDB ์ ‘์†์šฉ ํ•จ์ˆ˜ ์ƒ์„ฑ ํด๋ผ์šฐ๋“œ ..

Server/MongoDB 2022. 9. 24. 11:40