๋ชฉ๋ก์ „์ฒด ๊ธ€ (162)

EEALL@ONCE

๐Ÿ“Š ์ฟผ๋ฆฌ ์Šคํ„ฐ๋””(2) - ์‚ฌ์šฉ์ž ๋ณ„ ๊ฒŒ์‹œ๋ฌผ์„ ์ž‘์„ฑํ•œ ์ˆ˜์— ๋”ฐ๋ผ ์‚ฌ์šฉ์ž๋ฅผ ์„ ํƒ (HAVING / SUBQUERY / IN, EXISTS, ALL, ANY, SOME )

1. ๐Ÿ“Šํ…Œ์ด๋ธ” 2. ๐Ÿง ๋ฌธ์ œ 2๊ฐœ ์ด์ƒ์˜ ๊ฒŒ์‹œ๋ฌผ์„ ์ž‘์„ฑํ•œ ์‚ฌ์šฉ์ž๋งŒ ์„ ํƒํ•˜๊ณ  ์‹ถ๋‹ค. 3. ๐Ÿ’ก ํ•ด๊ฒฐ SELECT u.id, u.username FROM Users u WHERE u.id IN ( SELECT p.user_id FROM Posts p GROUP BY p.user_id HAVING COUNT(*) >= 2 ); ๐Ÿ”ด HAVING HAVING ์ ˆ์€ SQL์—์„œ ๊ทธ๋ฃนํ™”๋œ ๊ฒฐ๊ณผ์— ๋Œ€ํ•œ ํ•„ํ„ฐ๋ฅผ ์ œ๊ณต. ์ฆ‰, GROUP BY ์ ˆ๋กœ ๊ทธ๋ฃนํ™”๋œ ๊ฒฐ๊ณผ ์ค‘ ํŠน์ • ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๊ทธ๋ฃน๋งŒ์„ ์„ ํƒํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉ HAVING ์ ˆ์€ GROUP BY ์ ˆ๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜๋ฉฐ, WHERE ์ ˆ๊ณผ ๋น„์Šทํ•˜๊ฒŒ ๋™์ž‘ํ•˜์ง€๋งŒ ์ค‘์š”ํ•œ ์ฐจ์ด์ ์ด ์žˆ์Œ! WHERE ์ ˆ์€ ๊ฐœ๋ณ„ ํ–‰์— ๋Œ€ํ•œ ํ•„ํ„ฐ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ฐ˜๋ฉด, HAVING ์ ˆ์€ ๊ทธ๋ฃน์— ๋Œ€ํ•œ ํ•„ํ„ฐ๋ฅผ ์ œ๊ณต..

๐Ÿ“Š ์ฟผ๋ฆฌ ์Šคํ„ฐ๋””(1) - IFNULL / JOIN ์ „ ์กฐ๊ฑด / JOIN ํ›„ ์กฐ๊ฑด

๐Ÿ“Š ํ…Œ์ด๋ธ” : payment (์ˆ˜๋‚ฉ/ํ• ์ธ) / bill (์ฒญ๊ตฌ) ๐Ÿง๋ฌธ์ œ ์‚ฌํ•ญ: ์ฒญ๊ตฌ ํ…Œ์ด๋ธ”๊ณผ ์ˆ˜๋‚ฉ ํ…Œ์ด๋ธ”์ด ์žˆ๋Š”๋ฐ, ์ฒญ๊ตฌ ํ…Œ์ด๋ธ” ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ์ˆ˜๋‚ฉ์ด ๋˜์—ˆ๋Š”์ง€๋ฅผ ์ฒดํฌํ•˜๊ณ  ์‹ถ๋‹ค. ๋‹ค๋งŒ ๋ชจ๋‘ ๋‚ฉ๋ถ€ ์ด์™ธ์—๋„ ๋ถ€๋ถ„์ ์œผ๋กœ ์ฐ”๋”์ฐ”๋” ๋‚ฉ๋ถ€ํ–ˆ์„ ๊ฐ€๋Šฅ์„ฑ๋„ ์žˆ๋Š” ์ƒํ™ฉ ๋˜ํ•œ ์ˆ˜๋‚ฉ ํ…Œ์ด๋ธ”์€ ๊ณ ๊ฐ์ด ์ˆ˜๋‚ฉํ•œ ๊ธˆ์•ก๋„ ์Œ“์ด์ง€๋งŒ ํšŒ์‚ฌ๊ฐ€ ํ• ์ธํ•ด์ฃผ๋Š” ๊ธˆ์•ก๋„ ์Œ“์ธ๋‹ค. (์ฆ‰ ์ฒญ๊ตฌ๊ธˆ-์ˆ˜๋‚ฉ๊ธˆ-ํ• ์ธ๊ธˆ=0 ์ด ๋˜์–ด์•ผ ์™„๋‚ฉ์ด ๋œ๋‹ค.) ๐Ÿ’ก์†”๋ฃจ์…˜: SELECT bill.bill_sn, bill.ban, bill.bill_item, bill.charge_money, SUM(IFNULL(pym.pym_amt, 0)), SUM(IFNULL(sale.pym_amt, 0)), (bill.charge_money - SUM(IFNULL(pym.pym_amt, 0)) ..

๐ŸŒฑ ์ˆœ์ˆ˜ํ•œ ์ž๋ฐ” ์ฝ”๋“œ๋กœ DIํ•œ ๋ถ€๋ถ„ ์Šคํ”„๋ง์œผ๋กœ ์ „ํ™˜ํ•˜๊ธฐ (์Šคํ”„๋ง ์ปจํ…์ŠคํŠธ/ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ)

@Configuration @Configuration์€ Java ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋นˆ ๊ตฌ์„ฑ์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” Spring์˜ ๊ฐ•๋ ฅํ•œ ์ฃผ์„ Java ํด๋ž˜์Šค์—์„œ @Configuration ์ฃผ์„์„ ์‚ฌ์šฉํ•˜๋ฉด ํด๋ž˜์Šค์— Spring Bean ๊ตฌ์„ฑ ๋ฉ”์†Œ๋“œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Œ์„ ๋‚˜ํƒ€๋ƒ„ ์ฆ‰ ์—ฌ๊ธฐ์— Bean๋“ค์ด ์žˆ์–ด์š”! ๋ผ๊ณ  ์•Œ๋ ค์ฃผ๋Š” ์—ญํ•  @Bean @Bean์„ ์‚ฌ์šฉํ•˜๋ฉด Annotated ๋ฉ”์†Œ๋“œ๊ฐ€ ๋ฆฌํ„ดํ•œ ๊ฐ์ฒด๋ฅผ Spring Bean์œผ๋กœ ๊ด€๋ฆฌํ•˜๋„๋ก Spring์— ์ง€์‹œ ์ฆ‰ ์—ฌ๊ธฐ์— ํ•ด๋‹น ์ด๋ฆ„์˜ Bean์œผ๋กœ ๊ด€๋ฆฌํ•  ๊ฑฐ ์žˆ์–ด์š” ! ๋ผ๊ณ  ์•Œ๋ ค์ฃผ๋Š” ์—ญํ•  ๋ฉ”์„œ๋“œ๋Š” ๋นˆ์„ ์ƒ์„ฑํ•˜๊ณ  ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ํŒฉํ† ๋ฆฌ ์—ญํ• ์„ ํ•จ. ๋ฉ”์†Œ๋“œ์˜ ๋ฆฌํ„ด ํƒ€์ž…์€ ์ƒ์„ฑํ•  ๋นˆ์˜ ํƒ€์ž…์„ ๋‚˜ํƒ€๋ƒ„ import org.springframework.context.annotati..

Spring๐ŸŒฑ 2023. 7. 23. 14:57
๐ŸŒฑIoC,DI,์ปจํ…Œ์ด๋„ˆ

์ œ์–ด์˜ ์—ญ์ „ IoC(Inversion of Control) ๊ตฌํ˜„ ๊ฐ์ฒด(์ž‘๊ฐ€ ์—ญํ• )์ด ํ”„๋กœ๊ทธ๋žจ์˜ ์ œ์–ด ํ๋ฆ„ ( ๋ฐฐ์šฐ ์บ์ŠคํŒ… ์ด๋ผ๊ณ  ํ•˜๋˜๊ฑธ ) ์Šค์Šค๋กœ ํ–ˆ๋‹ค๋ฉด, AppConfig ์ดํ›„์—๋Š” ๊ตฌํ˜„ ๊ฐ์ฒด๋Š” ์ž๊ธฐ ๋กœ์ง๋งŒ ์‹คํ–‰ํ•˜๋Š” ํ•˜๋Š” ์—ญํ• ์„ ํ•˜๊ณ (๊ธ€์˜ ์ „๊ฐœ๋งŒ ์‹ ๊ฒฝ์“ฐ๊ณ ) ํ”„๋กœ๊ทธ๋žจ์˜ ์ œ์–ด์˜ ํ๋ฆ„์€ AppConfig ๊ฐ€ ์ˆ˜ํ–‰ํ•œ๋‹ค. ์ฆ‰ ๋ˆ„๊ฐ€ ๋‚ด ๊ธ€์— ์ผ€์ŠคํŒ…๋ ์ง€๋Š” ๋ชจ๋ฅธ์ฒด, ๊ทธ๋ƒฅ ์„œ์‚ฌ๋งŒ ์ž˜ ์Œ“์•„์˜ฌ๋ฆฌ๋ฉด ๋˜๋Š”๊ฒŒ ์ œ์–ด์˜ ์—ญ์ „(IoC)์ด๋‹ค. ( ๊ตฌํ˜„ ๊ฐ์ฒด๊ฐ€ ๋ˆ„๊ฐ€ ์บ์ŠคํŒ… ๋  ์ง€ ๋ชฐ๋ผ์„œ ์ œ์–ด์˜ ์—ญ์ „์ด๋ผ๊ณ  ํ•˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค!) ํ”„๋ ˆ์ž„์›Œํฌ vs ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ - ํ”„๋ ˆ์ž„์›Œํฌ๋ฉด ๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋ฅผ ์ œ์–ดํ•˜๊ณ , ๋Œ€์‹  ์‹คํ–‰ ( JUnit) - ๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๊ฐ€ ์ง์ ‘ ์ œ์–ด์˜ ํ๋ฆ„์„ ๋‹ด๋‹นํ•œ๋‹ค๋ฉด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์˜์กด๊ด€๊ณ„์˜ ์ฃผ์ž… DI(Dependency Injecti..

Spring๐ŸŒฑ 2023. 7. 23. 14:19
๐Ÿ“Š ์ธ๋ฑ์Šค

์ธ๋ฑ์Šค๋ฅผ ๋งŒ๋“œ๋Š” ์ด์œ ? ์ธ๋ฑ์Šค๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ฑ๋Šฅ๊ณผ ์ฟผ๋ฆฌ ์ฒ˜๋ฆฌ ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ค๋Š”๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ์ธ๋ฑ์Šค์˜ ์„ค์ •์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์˜ ํŠน์ • ์—ด(์นผ๋Ÿผ)์— ๋Œ€ํ•ด ๋น ๋ฅธ ๊ฒ€์ƒ‰ ๋ฐ ์ •๋ ฌ ์ž‘์—…์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ๋น ๋ฅธ ๊ฒ€์ƒ‰ ์†๋„: ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ธ๋ฑ์Šค ํŠธ๋ฆฌ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋น ๋ฅด๊ฒŒ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ธ๋ฑ์Šค๊ฐ€ ์žˆ๋Š” ์—ด์„ ์‚ฌ์šฉํ•œ ๊ฒ€์ƒ‰์€ ์„ ํ˜• ๊ฒ€์ƒ‰๋ณด๋‹ค ํ›จ์”ฌ ๋น ๋ฅด๋ฉฐ, ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ์—์„œ๋„ ํšจ์œจ์ ์œผ๋กœ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ •๋ ฌ ์†๋„ ํ–ฅ์ƒ: ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ •๋ ฌ ์ž‘์—…๋„ ํ›จ์”ฌ ๋น ๋ฆ…๋‹ˆ๋‹ค. ์ธ๋ฑ์Šค๊ฐ€ ์žˆ๋Š” ์—ด์„ ๊ธฐ์ค€์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•˜๋ฉด ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ์˜ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋น„๊ตํ•˜๋Š” ํšŸ์ˆ˜๊ฐ€ ์ค„์–ด๋“ค์–ด ๋” ๋น ๋ฅธ ์ •๋ ฌ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์กฐ์ธ ์„ฑ๋Šฅ ํ–ฅ์ƒ: ๋‘ ๊ฐœ ..