์ „์ฒด ๊ธ€ 72

[MSSQL] WITH ์ ˆ ์‚ฌ์šฉ

MS SQL Server์—์„œ WITH ์ ˆ์€ ์ผ์‹œ์ ์ธ ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.์ด ์„œ๋ธŒ์ฟผ๋ฆฌ๋Š” WITH ์ ˆ ๋’ค์— ์ •์˜๋œ ์ด๋ฆ„์„ ๊ฐ€์ง€๋ฉฐ, ์ด ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ธŒ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.์ด๋Ÿฌํ•œ ๊ตฌ๋ฌธ์„ "๊ณตํ†ต ํ…Œ์ด๋ธ” ์‹(Common Table Expression, CTE)"์ด๋ผ๊ณ ๋„ ๋ถ€๋ฆ…๋‹ˆ๋‹ค. ์ฃผ์˜์ * CTE ๋Š” ํ•ด๋‹น ์ฟผ๋ฆฌ ๋‚ด์—์„œ๋งŒ ์ž„์‹œ์ ์œผ๋กœ ์กด์žฌํ•˜๋ฉฐ, ์ฟผ๋ฆฌ ์ข…๋ฃŒ ์‹œ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค.* CTE์˜ ์„ฑ๋Šฅ์€ ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋ฉฐ, ๋งค์šฐ ํฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ๊ฒฝ์šฐ ์„ฑ๋Šฅํ…Œ์ŠคํŠธ๋ฅผ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ํŠน์ง•์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅ์„ฑ: ์—ฌ๋Ÿฌ ๋ฒˆ ์ฐธ์กฐ๊ฐ€๋Šฅํ•˜๋ฉฐ, ๋ณต์žกํ•œ ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.๊ฐ€๋…์„ฑ ํ–ฅ์ƒ: ๋ณต์žกํ•œ ์ฟผ๋ฆฌ๋ฅผ ์ž‘์€ ๋‹จ์œ„๋กœ ๋‚˜๋ˆ„์–ด, ๊ฐ€๋…์„ฑ์„ ๋†’์ธ๋‹ค.์žฌ๊ท€์  ์‚ฌ์šฉ๊ฐ€๋Šฅ: ์ž๊ธฐ ์ž์‹ ์„ ์ฐธ์กฐํ•˜์—ฌ ๊ณ„์ธต ๊ตฌ์กฐ๋‚˜ ํŠธ๋ฆฌ๊ตฌ์กฐ๋ฅผ ์‰ฝ๊ฒŒ ..

OOM ๋ฐœ์ƒ 2 - ์—‘์…€ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ Apache POI ์˜ SXSSFWorkbook ์‚ฌ์šฉ

๊ธฐ์กด ๋ฐฉ์‹๊ธฐ์กด์— ์—‘์…€ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ ํ•˜๋Š” ๋ฐฉ์‹์€ list๋กœ  ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์™€์„œ modelMap ์— ๋‹ด์•„์ฃผ๊ณ  return ํ• ๋•Œ new ModelAndView("fileroot/testExcelDownload", modelMap); ์ด๋Ÿฐ์‹์œผ๋กœ ์—‘์…€ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์ฃผ๊ณ  ์žˆ์—ˆ๋‹ค.modelMap.put("alist",alist); ๋ฌธ์ œ๋ฐœ์ƒ ์›์ธ๊ทผ๋ฐ ์ด๋ ‡๊ฒŒ ์“ฐ๊ณ  ์žˆ์—ˆ๋Š”๋ฐ ๋ฐ์ดํ„ฐ์˜ ์–‘์ด N ๋งŒ๊ฑด ์ •๋„๊ฐ€ ๋˜๋‹ค ๋ณด๋‹ˆ ์ง€๋‚˜์ง€๋‚˜์นœ forEach ํƒœ๊ทธ์˜ ๋ฐ˜๋ณต์œผ๋กœ OOM ์ด ๋ฐœ์ƒํ–ˆ๋‹ค.  ์•ž ๊ธ€์—์„œ ๋งํ–ˆ๋˜๊ฒƒ ์ฒ˜๋Ÿผ ์ž์„ธํ•œ ์ด์œ ๋Š” ์•„๋ž˜์™€ ๊ฐ™์•˜๋‹ค.  Java WAS์˜ Heap ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•ด์ ธ Full GC๊ฐ€ ์ง€์†์ ์œผ๋กœ ๋ฐœ์ƒํ–ˆ๊ณ , ๊ฒฐ๊ตญ Heap ๋ฉ”๋ชจ๋ฆฌ2GB ์ค‘ 1.6GB๋ฅผ ํŠน์ • ํด๋ž˜์Šค๊ฐ€ ์ ์œ ํ•˜๋Š” ๋ฌธ์ œ์˜€๋‹ค. ๋Œ€๋žต์ ์ธ ๊ณผ์ •์€ ์ด๋žฌ๋‹ค.- ..

23. error 2025.04.07

OOM ๋ฐœ์ƒ 1 - ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ๋Œ€ํ•ด์„œ (์Šคํƒ๊ณผ ํž™์˜ ์ฐจ์ด์ )

์ตœ๊ทผ ๋งก๊ณ  ์žˆ๋Š” ํ”„๋กœ์ ํŠธ์—์„œ ํŠน์ • ์‹œ์ ๋ถ€ํ„ฐ CPU ์‚ฌ์šฉ๋ฅ ์ด ๊ธ‰์ฆํ•˜๋ฉฐ ์„œ๋น„์Šค ์žฅ์• ๋กœ ์ด์–ด์ง€๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. ํƒ€๋ถ€์„œ์˜ ์ง€์›์œผ๋กœ ์ƒ์„ธํžˆ ์›์ธ์„ ๋ถ„์„ํ•ด ๋ณด๋‹ˆ, Java WAS์˜ Heap ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•ด์ ธ Full GC๊ฐ€ ์ง€์†์ ์œผ๋กœ ๋ฐœ์ƒํ–ˆ๊ณ , ๊ฒฐ๊ตญ Heap ๋ฉ”๋ชจ๋ฆฌ2GB ์ค‘ 1.6GB๋ฅผ ํŠน์ • ํด๋ž˜์Šค๊ฐ€ ์ ์œ ํ•˜๋Š” ๋ฌธ์ œ์˜€๋‹ค. ๋Œ€๋žต์ ์ธ ๊ณผ์ •์€ ์ด๋žฌ๋‹ค.- ์ธํ”„๋ผ ๋ฆฌ์†Œ์Šค ํŠน์ด์‚ฌํ•ญ์€ 17์‹œ 19๋ถ„ ๋ถ€ํ„ฐ cpu ์‚ฌ์šฉ๋ฅ ์ด ๊ธ‰์ฆํ•˜๊ธฐ ์‹œ์ž‘ํ•˜์—ฌ was ํ”„๋กœ์„ธ์Šค ์žฌ๊ธฐ๋™ ์ „๊นŒ์ง€ cpu ์‚ฌ์šฉ๋ฅ  90% ๊ณผ์ ์œ - cpu ๊ณผ์ ์œ ๋Š” jboss heap ๋ฉ”๋ชจ๋ฆฌ์—์„œ java.lang.outofMemoryError(OOM) ์ด ๋ฐœ์ƒํ•˜๋ฉฐ ๋ฉ”๋ชจ๋ฆฌ ํ™•๋ณด๋ฅผ ์œ„ํ•œ full GC ์ˆ˜ํ–‰ ์˜ํ–ฅ์œผ๋กœ ํ™•์ธ - Full GC ์ˆ˜ํ–‰์œผ๋กœ๋„ java heap ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ™•๋ณด๊ฐ€..

23. error 2025.03.19

์ž๋ฐ” ์ค‘์ฒฉํด๋ž˜์Šค, ๋‚ด๋ถ€ํด๋ž˜์Šค 1 (๊น€์˜ํ•œ์˜ ์‹ค์ „์ž๋ฐ” ์ค‘๊ธ‰ 1ํŽธ)

์ค‘์ฒฉ ํด๋ž˜์Šค, ๋‚ด๋ถ€ ํด๋ž˜์Šค๋ž€?๋‹ค์Œ๊ณผ ๊ฐ™์ด for๋ฌธ ์•ˆ์— for๋ฌธ์„ ์ค‘์ฒฉํ•˜๋Š” ๊ฒƒ์„ ์ค‘์ฒฉ(Nested) for๋ฌธ์ด๋ผ ํ•œ๋‹ค. ```java for (...) {     //์ค‘์ฒฉ for๋ฌธ     for (...) {     } } ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํด๋ž˜์Šค ์•ˆ์— ํด๋ž˜์Šค๋ฅผ ์ค‘์ฒฉํ•ด์„œ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๊ฒƒ์„ ์ค‘์ฒฉ ํด๋ž˜์Šค(Nested Class)๋ผ ํ•œ๋‹ค.  class Outer{     //์ค‘์ฒฉ ํด๋ž˜์Šค     class Nested {               ...     } } ```  ์ค‘์ฒฉ ํด๋ž˜์Šค ์•ˆ์— ๋‚ด๋ถ€ ํด๋ž˜์Šค(๋‚ด๋ถ€ํด๋ž˜์Šค / ์ง€์—ญํด๋ž˜์Šค / ์ต๋ช…ํด๋ž˜์Šค)์™€ ์ •์  ์ค‘์ฒฉ ํด๋ž˜์Šค๊ฐ€ ์žˆ๋‹ค.๋‚ด๋ถ€ ํด๋ž˜์Šค๋Š” static ์ด ๋ถ™์ง€ ์•Š๊ณ  ์ •์  ์ค‘์ฒฉ ํด๋ž˜์Šค๋Š” ์•ž์— static์ด ๋ถ™๋Š”๋‹ค. ์‹ค๋ฌด์—์„œ๋Š” ๋ณดํ†ต ์ •์  ์ค‘์ฒฉ ํด๋ž˜์Šค๋„ ๋‚ด๋ถ€ํด๋ž˜์Šค๋ผ..

[์„น์…˜ 5] ์ƒ์†๊ณผ ์กฐํ•ฉ, Value Object, ์ผ๊ธ‰ ์ปฌ๋ ‰์…˜

์ƒ์†๊ณผ ์กฐํ•ฉโœ”๏ธ์ƒ์†๋ณด๋‹ค ์กฐํ•ฉ์„ ์‚ฌ์šฉํ•˜์ž!โœ”๏ธ์™œ๋ƒ๋ฉด ์ƒ์†์€ ์‹œ๋ฉ˜ํŠธ์ฒ˜๋Ÿผ ๊ตณ์–ด์ง€๋Š” ๊ตฌ์กฐ๋‹ค. ์ˆ˜์ •์ด ์–ด๋ ค์›€    โžก๏ธ ๋ถ€๋ชจ์™€ ์ž์‹์˜ ๊ฒฐํ•ฉ๋„๊ฐ€ ๋†’๋‹ค.    ๋ถ€๋ชจ์˜ ๊ธฐ๋Šฅ์„ ์ž์‹์ด ๊ทธ๋Œ€๋กœ ๊ฐ€์ ธ๊ฐ€์„œ ์‚ฌ์šฉํ•˜๋Š” ํ˜•ํƒœ๋กœ ๋ถ€๋ชจ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ๋“ค์„ ๋น ์‚ญํ•˜๊ฒŒ ์•Œ๊ณ  ์žˆ์–ด์•ผํ•จ    ๊ทธ๋ ‡๊ธฐ๋•Œ๋ฌธ์— ๋ถ€๋ชจ๊ฐ€ ์กฐ๊ธˆ์ด๋ผ๋„ ์ˆ˜์ •ํ•˜๋ฉด ์ž์‹๊ฐ์ฒด๊นŒ์ง€ ์˜ํ–ฅ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—    ์ƒ์†๋ณด๋‹ค ์กฐํ•ฉ์„ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ๋” ์ข‹๋‹ค. โœ”๏ธ์กฐํ•ฉ๊ณผ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์ด ์œ ์—ฐํ•œ ๊ตฌ์กฐ    โžก๏ธ ์ƒ์†์„ ํ†ตํ•œ ์ฝ”๋“œ์˜ ์ค‘๋ณต์ œ๊ฑฐ๊ฐ€ ์ฃผ๋Š” ์ด์ ๋ณด๋‹ค, ์ค‘๋ณต์ด ์ƒ๊ธฐ๋”๋ผ๋„ ์œ ์—ฐํ•œ ๊ตฌ์กฐ ์„ค๊ณ„๊ฐ€ ์ฃผ๋Š” ์ด์ ์ด ๋” ํฌ๋‹ค.์ƒ์†์™œ ๋งŒ๋“ค์—ˆ์„๊นŒ? ๋ถ€๋ชจํด๋ž˜์Šค๊ฐ€ ๊ฐ–๊ณ  ์žˆ๋Š” ๋ณ€์ˆ˜์™€ ๋ฉ”์†Œ๋“œ๋ฅผ ์ƒ์†๋ฐ›์Œ์œผ๋กœ์จ, ๊ฐœ๋ฐœํ•  ๋•Œ ์ด์ค‘ ์‚ผ์ค‘์˜ ์ผ์„ ์•ˆํ•ด๋„ ๋˜๊ธฐ ๋•Œ๋ฌธ์—(ํ•˜๋‚˜์˜ ํด๋ž˜์Šค๋ฅผ ์ž˜ ๋งŒ๋“ค์–ด ๋†“์œผ๋ฉด, ๊ทธ ํด๋ž˜..

SRP: Single Responsibility Principle, OCP: Open-Closed Principle, LSP: Liskov Substitution Principle, ISP: Interface Segregation Principle, DIP: Dependency Inversion Principle ๊ฐ•์˜

๐Ÿ–๏ธSRP: Single Responsibility Principle (๋‹จ์ผ ์ฑ…์ž„ ์›์น™) ๐ŸŒ€ ํ•˜๋‚˜์˜ ํด๋ž˜์Šค๋Š” ๋‹จ ํ•œ๊ฐ€์ง€์˜ ๋ณ€๊ฒฝ ์ด์œ ๋งŒ์„ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค.      - '๋ณ€๊ฒฝ ์ด์œ ' = ์ฑ…์ž„๐ŸŒ€ ๊ฐ์ฒด๊ฐ€ ๊ฐ€์ง„ ๊ณต๊ฐœ ๋ฉ”์„œ๋“œ, ํ•„๋“œ, ์ƒ์ˆ˜ ๋“ฑ์€ ํ•ด๋‹น ๊ฐ์ฒด์˜ ๋‹จ์ผ ์ฑ…์ž„์— ์˜ํ•ด์„œ๋งŒ ๋ณ€๊ฒฝ ๋˜๋Š”๊ฐ€?๐ŸŒ€ ๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ (๊ด€์‹ฌ์‚ฌ์™€ ์ฑ…์ž„ ๋น„์Šทํ•œ ๋ง๋กœ ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋Š” ํ•˜๋‚˜์˜ ๊ด€์‹ฌ์‚ฌ ๋งŒ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค.)๐ŸŒ€  ๋†’์€ ์‘์ง‘๋„, ๋‚ฎ์€ ๊ฒฐํ•ฉ๋„ * ์‘์ง‘๋„: ํด๋ž˜์Šค๋‚˜ ๋ชจ๋“ˆ์ด ๋ฐ€์ ‘ํ•˜๊ฒŒ ์‘์ง‘๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.* ๊ฒฐํ•ฉ๋„: ํ•œ ๊ฐ์ฒด๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ์„๋•Œ ๋‹ค๋ฅธ ๊ฐ์ฒด์— ์˜ํ–ฅ์„ ์ฃผ๋Š” ์ •๋„ ๐Ÿ–๏ธOCP: Open-Closed Principle ๐ŸŒ€ ํ™•์žฅ์—๋Š” ์—ด๋ ค์žˆ๊ณ , ์ˆ˜์ •์—๋Š” ๋‹ซํ˜€์žˆ์–ด์•ผ ํ•œ๋‹ค.    โžก๏ธ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์š”๊ตฌ์‚ฌํ•ญ ๋ณ€๊ฒฝ ์‹œ ๊ธฐ์กด ์ฝ”๋“œ์˜ ๋ณ€..

23. Back-end 2024.12.19

async ํ•จ์ˆ˜์™€ await

์™œ ์‚ฌ์šฉํ•˜์ง€? async ํ•จ์ˆ˜๋Š” ๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค.์ผ๋ฐ˜์ ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ, ์–ด๋–ค ์ž‘์—…์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋Š”๋ฐ, ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ๋‹ค. async ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, ์ด๋Ÿฌํ•œ ์ž‘์—…์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ๋‹ค๋ฅธ ์ž‘์—…์„ ๋จผ์ € ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค!์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์˜ ํšจ์œจ์„ฑ์ด ๋†’์•„์ง€๊ณ , ํŠนํžˆ I/O ์ž‘์—…์ด๋‚˜ ๋„คํŠธ์›Œํฌ ์š”์ฒญ ๊ฐ™์€ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š” ์ž‘์—…์—์„œ ์œ ์šฉํ•˜๋‹ค. async (์–ด์‹ฑํฌ)ํ•จ์ˆ˜ ๋ฌธ๋ฒ•  async๋Š” function ์•ž์— ์œ„์น˜ํ•œ๋‹ค.async function f() {       return 1; } function ์•ž์— async๋ฅผ ๋ถ™์ด๋ฉด ํ•ด๋‹น ํ•จ์ˆ˜๋Š” ํ•ญ์ƒ ํ”„๋ผ๋ฏธ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ํ”„๋ผ๋ฏธ์Šค๊ฐ€ ์•„๋‹Œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋”๋ผ๋„ ์ดํ–‰ ์ƒํƒœ์˜ ํ”„๋ผ๋ฏธ์Šค(resolved promise)๋กœ ..

Callback ๊ณผ Promise ์ฐจ์ด ์•Œ์•„๋ณด๊ธฐ, Promise ์‚ฌ์šฉํ•˜๊ธฐ (ํ† ์Šค ๋ธ”๋กœ๊ทธ ์ฐธ๊ณ )

Callback์„ ์‚ฌ์šฉํ•œ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—๋Š” setTimeout() ์ด๋ผ๋Š” ๋Œ€ํ‘œ์ ์ธ ๋‚ด์žฅ ๋น„๋™๊ธฐ ํ•จ์ˆ˜๊ฐ€ ์žˆ๋‹ค. setTimeout()์€ ๋‘ ๊ฐœ์˜ ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ๋ฐ›๋Š”๋ฐ, ์ฒซ๋ฒˆ์งธ๋Š” ์‹คํ–‰ํ•  ์ž‘์—… ๋‚ด์šฉ์„ ๋‹ด์€ ์ฝœ๋ฐฑ ํ•จ์ˆ˜์ด๊ณ , ๋‘ ๋ฒˆ์งธ๋Š” ์ด ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์ „์— ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋ฐ€๋ฆฌ์ดˆ ๋‹จ์œ„ ์‹œ๊ฐ„์ด๋‹ค. ์ฆ‰, setTimeout() ํ•จ์ˆ˜๋Š” ๋‘๋ฒˆ์งธ ์ธ์ž๋กœ ๋“ค์–ด์˜จ ์‹œ๊ฐ„๋งŒํผ ๊ธฐ๋‹ค๋ฆฐ ํ›„์— ์ฒซ ๋ฒˆ์งธ ์ธ์ž๋กœ ๋“ค์–ด์˜จ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•œ๋‹ค. ์‚ฌ์šฉ์˜ˆ์‹œ๋ฅผ ๋ณด๋ฉด ์•„๋ž˜์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.setTimeout(function () { console.log("Hello World");}, 2000);console.log("setTimeout() example...");function async(callback) { setTimeout..

[MSSQL] EXISTS,NOT EXISTS, IF EXISTS, ์ €์žฅํ”„๋กœ์‹œ์ € ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ธฐ

SQL Server์—์„œ EXISTS ์—ฐ์‚ฐ์ž๋Š” ์„œ๋ธŒ์ฟผ๋ฆฌ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ์ฒดํฌํ•˜๊ณ  ์กด์žฌํ•  ๊ฒฝ์šฐ TRUE๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ, ๋Œ€ํ‘œ์ ์œผ๋กœ EXISTS ๊ตฌ๋ฌธ๊ณผ NOT EXISTS ๊ตฌ๋ฌธ์ด ์žˆ๋‹ค. EXISTS ์—ฐ์‚ฐ์ž๋Š” IN ์—ฐ์‚ฐ์ž์™€ ๋น„์Šทํ•œ ์šฉ๋„๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, IN ์—ฐ์‚ฐ์ž๋Š” ๋น„๊ตํ•  ๊ฐ’์„ ์ง์ ‘ ๋Œ€์ž…ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ EXISTS ์—ฐ์‚ฐ์ž๋Š” ์„œ๋ธŒ์ฟผ๋ฆฌ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ์ƒํ™ฉ์— ๋”ฐ๋ผ์„œ IN ์—ฐ์‚ฐ์ž ๋ณด๋‹ค EXISTS ์—ฐ์‚ฐ์ž์˜ ์„ฑ๋Šฅ์ด ์ข‹์„ ์ˆ˜ ์žˆ๋‹ค.   โ˜˜๏ธ๊ธฐ๋ณธ์ ์ธ EXISTS, NOT EXISTS ์‚ฌ์šฉ๋ฒ•  ์œ„์˜ ์ฟผ๋ฆฌ๋ฌธ์€ dept ํ…Œ์ด๋ธ”์˜ deptno๊ฐ€ EXISTS ์„œ๋ธŒ์ฟผ๋ฆฌ์—์„œ deptno๊ฐ€ ์กด์žฌํ•  ๋•Œ๋งŒ ๋ฐ์ดํ„ฐ๊ฐ€ ์กฐํšŒ๋˜๋Š” ์˜ˆ์ œ์ด๋‹ค.deptno๊ฐ€ ์„œ๋ธŒ์ฟผ๋ฆฌ์— 1๊ฑด์ด๋ผ๋„ ์กด์žฌํ•˜๋ฉด TRUE๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ ๋ฐ์ดํ„ฐ๊ฐ€ ์กฐ..

Cannot set error status - response is already committed ์—๋Ÿฌ / JSON ์ง๋ ฌํ™” ์ˆœํ™˜ ์ฐธ์กฐ

์ด๋ฒˆ ๋ฐ˜์˜์—๋Š” ๋ฐฐ์น˜๋ฅผ ๋Œ๋ ค์„œ ํ…Œ์ŠคํŠธ ํ•ด๋ด์•ผ ํ•˜๋Š” ๊ฒƒ๋“ค์ด ์žˆ์—ˆ๋‹ค. ๋˜ ์–ด๋–ค ใ…‹ ์‹œ๋ จ์ด ๋‹ค๊ฐ€์˜ฌ๊นŒ.. ๋‘๊ทผ ๊ฑฐ๋ฆฌ๋ฉฐ ์‹ค์‹œ๊ฐ„ ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์„œ๋ฒ„์— ์ ‘๊ทผํ•ด์„œ ์ฐฝ์„ ์ผœ๋†“๊ณ  ๋ฐฐ์น˜๋ฅผ ๋Œ๋ ธ๋‹ค. ๊ทผ๋ฐ.. ์—ญ์‹€ Cannot set error status - response is already committed์ด๋Ÿฐ ์—๋Ÿฌ๋ฅผ .. ๋งŒ๋‚ฌ๋‹ค. ์ฒ˜์Œ ๋ณด๋Š” ์—๋Ÿฌ์˜€๋‹ค. (์‚ฌ์‹ค ๊ฐœ๋ฐœ์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด๋ดค์„๋•Œ ๊ทธ๋ƒฅ ๋ฐ์ดํ„ฐ์— ๋ฌธ์ œ ์—†์œผ๋‹ˆ๊นŒ ~ ๋กœ๊ทธ๋„ ๋„์–ด๋†จ์ง€๋งŒ ๋งˆ์ง€๋ง‰ ๋ฌธ์žฅ์€ ์•ˆ์ฝ๊ณ  ๊ทธ๋ƒฅ ๋„˜์–ด๊ฐ”๋˜ ์ .. ใ…  ์ด ๋‹นํ™ฉ์Šค๋Ÿฝ๊ฒŒ ๋งŒ๋“ค์–ด์„œ ์ด๊ฒŒ ๋ชจ์•ผ.. ์ด๋Ÿฌ๋ฉด์„œ ์ฐพ์•„๋ดค๋˜ ๊ฒƒ ๊ฐ™๋‹ค.) ๊ฒฐ๋ก ๋ถ€ํ„ฐ ๋งํ•˜์ž๋ฉด, ์ € ์—๋Ÿฌ๋Š” ๋‹ค๋ฅธ ๋ฐฐ์น˜๋ฅผ ๋Œ๋ ธ์„๋•Œ๋„ ๋œจ๊ณ  ์žˆ๊ณ ํฐ์ด์Šˆ๊ฐ€ ์•„๋‹ˆ๋ผ๊ณ  ํŒ๋‹จํ•˜๊ณ  ๊ทธ๋ƒฅ ๋„˜์–ด๊ฐ€์ž๊ณ  ํ•˜์…”์„œ ํ  ๊ธ€์ฟค,, ํ•˜๊ณ  ๋„˜์–ด๊ฐ” ์„ ์ค„ ์•Œ์•˜๊ฒ ์ง€๋งŒ ์ข€ ๊ถ๊ธˆํ•ด์„œ  ..