๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋ก๐ŸŒฑSPRING (31)

Coding Planet

Spring JDBC์˜ ์ •์˜์™€ ํŠน์ง•

Spring Framework์˜ ํŠน์ง•์ค‘ Spring JDBC์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž 1. Spring JDBC๋ž€ Spring JDBC๋Š” ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์ œ๊ณตํ•˜๋Š” JDBC(Java Database Connectivity) ๊ธฐ๋ฐ˜์˜ ๋ฐ์ดํ„ฐ ์•ก์„ธ์Šค ๊ธฐ์ˆ ์ด๋‹ค. JDBC๋Š” ์ž๋ฐ” ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘๊ทผํ•˜๊ณ  ์กฐ์ž‘ํ•˜๊ธฐ ์œ„ํ•œ ํ‘œ์ค€ API์ด๋‹ค. Spring JDBC๋Š” JDBC๋ฅผ ๋ณด๋‹ค ์‰ฝ๊ณ  ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ถ”์ƒํ™”๋œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š”๋ฐ, ์ด๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๋Š” ๋ฐ˜๋ณต์ ์ด๊ณ  ๋ฒˆ๊ฑฐ๋กœ์šด JDBC ์ž‘์—…์„ ๊ฐ„์†Œํ™”ํ•˜๊ณ  ์ƒ์‚ฐ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. 2. Spring JDBC์˜ ํŠน์ง• 1) DataSource ์ถ”์ƒํ™” Spring JDBC๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ํ’€์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ DataSource ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•œ๋‹ค...

๐ŸŒฑSPRING 2023. 5. 18. 17:58
Maven์ด๋ž€? POM.XML์—์„œ ์˜์กด์„ฑ ๊ด€๋ฆฌ, Maven ์‚ฌ์šฉํ•˜์—ฌ POM.XML์— DI ์ถ”๊ฐ€ํ•˜๊ธฐ

1. Maven์ด๋ž€? Maven์€ ์ž๋ฐ” ๊ธฐ๋ฐ˜ ํ”„๋กœ์ ํŠธ์˜ ๋นŒ๋“œ, ์ข…์†์„ฑ ๊ด€๋ฆฌ ๋ฐ ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ๋„๊ตฌ์ด๋‹ค. Apache ์†Œํ”„ํŠธ์›จ์–ด ์žฌ๋‹จ์— ์˜ํ•ด ๊ฐœ๋ฐœ๋˜์—ˆ์œผ๋ฉฐ, ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๋นŒ๋“œ ๋„๊ตฌ ์ค‘ ํ•˜๋‚˜์ด๋‹ค. Maven์„ ์‚ฌ์šฉํ•˜๋ฉด ํ”„๋กœ์ ํŠธ์˜ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ž๋™ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค. Maven์€ ํ”„๋กœ์ ํŠธ์˜ ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•˜๋Š” ํ”„๋กœ์ ํŠธ ๊ฐ์ฒด ๋ชจ๋ธ(Project Object Model, POM)์„ ์‚ฌ์šฉํ•œ๋‹ค. POM์€ ํ”„๋กœ์ ํŠธ์˜ ์ข…์†์„ฑ, ๋นŒ๋“œ ์„ค์ •, ํ”Œ๋Ÿฌ๊ทธ์ธ ๋“ฑ์„ ์ •์˜ํ•˜๋Š” XML ํŒŒ์ผ์ด๋‹ค. Maven์€ POM ํŒŒ์ผ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ๋นŒ๋“œํ•˜๊ณ  ํ•„์š”ํ•œ ์ข…์†์„ฑ์„ ์ž๋™์œผ๋กœ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ ๊ด€๋ฆฌํ•œ๋‹ค. 2. Maven ์‚ฌ์šฉํ•˜์—ฌ POM.XML์— DI ์ถ”๊ฐ€ํ•˜๊ธฐ Maven์€ ์ค‘์•™์ €์žฅ์†Œ(Central Repository, ์œ„ ์‚ฌ์ง„์˜ ์‚ฌ์ดํŠธ)์—์„œ ..

๐ŸŒฑSPRING 2023. 5. 18. 16:22
Spring root-context.xml ๋œฏ์–ด๋ณด๊ธฐ

1. root-context.xml web.xml ํŒŒ์ผ์—์„œ ๊ฐ€์žฅ ๋จผ์ € ์ฝ์–ด๋“ค์ด๋Š” ์„ค์ • ํŒŒ์ผ ํ”„๋กœ์ ํŠธ ์ „๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์ž์›์„ ์ƒ์„ฑํ•˜๊ณ  ์„ค์ •ํ•˜๋Š” ํŒŒ์ผ DB ์—ฐ๊ฒฐ ๊ด€๋ จ ์ •๋ณด, ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ, ํŒŒ์ผ ์—…๋กœ๋“œ ๋“ฑ์„ ์ž‘์„ฑํ•œ๋‹ค. Spring ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํ…์ŠคํŠธ๋Š” ์Šคํ”„๋ง์—์„œ ์ œ๊ณตํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋กœ, ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ํ•„์š”ํ•œ ๊ณณ์—์„œ DI(Dependency Injection)๋กœ ์ฃผ์ž…ํ•  ์ˆ˜ ์žˆ๋‹ค. Spring ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํ…์ŠคํŠธ๋Š” ์Šคํ”„๋ง์˜ ํ•ต์‹ฌ์ ์ธ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜์ด๋‹ค. ์ด๋Ÿฌํ•œ ์ปจํ…์ŠคํŠธ๋ฅผ ์„ค์ •ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ํŒŒ์ผ์€ root-context.xml, servlet-context, applicationContext.xml ๋“ฑ์ด ์žˆ๋‹ค. ์ด ์ค‘ root-context.xmlํŒŒ์ผ์€ ์ฃผ๋กœ ์ „์—ญ์ ์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค์ • ์ •๋ณด๋ฅผ ์ •์˜ํ•˜๊ณ  ser..

๐ŸŒฑSPRING 2023. 5. 3. 18:02
Mybatis-confing.xml ๋œฏ์–ด๋ณด๊ธฐ

1. Mybatis-confing.xml ์ „๋ฌธ ์ด ํŒŒ์ผ์€ MyBatis ์‹คํ–‰ ์‹œ ํ•„์š”ํ•œ ์„ค์ • ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ์œผ๋ฉฐ, MyBatis ํ”„๋กœ์ ํŠธ์—์„œ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ์„ค์ • ํŒŒ์ผ์ด๋‹ค. MyBatis-config.xml ํŒŒ์ผ์€ ํ”„๋กœ์ ํŠธ์˜ ๋ฆฌ์†Œ์Šค ํด๋”์— ์œ„์น˜ํ•˜๋ฉฐ, MyBatis๊ฐ€ ์‹คํ–‰๋  ๋•Œ ํ•ด๋‹น ํŒŒ์ผ์˜ ์ •๋ณด๋ฅผ ์ฝ์–ด์™€ ์„ค์ •์„ ๊ตฌ์„ฑํ•œ๋‹ค. 2. Mybatis-confing.xml ๋œฏ์–ด๋ณด๊ธฐ 1. Settings ์š”์†Œ๋Š” MyBatis ์ „์—ญ ์„ค์ •์„ ๊ตฌ์„ฑํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. ์ฃผ์š” ์„ค์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. cacheEnabled: MyBatis๊ฐ€ ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ true์ž…๋‹ˆ๋‹ค. lazyLoadingEnabled: ์ง€์—ฐ ๋กœ๋”ฉ์„ ์‚ฌ์šฉํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ false์ž…๋‹ˆ๋‹ค. defaultStatementTi..

๐ŸŒฑSPRING 2023. 5. 3. 17:19
MyBatis - ๋™์  SQL ๊ตฌํ˜„ํ•˜๊ธฐ(if / choose / trim/ foreach)

JDBC MVC ํŒจํ„ด์œผ๋กœ DB๋ฅผ ์ˆ˜์ •, ํŽธ์ง‘ํ•˜๊ธฐ ์œ„ํ•ด์„œ sql.xml์— SQL๋ฌธ์„ ์ €์žฅํ•ด๋‘๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. ๋‹ค๋งŒ ์ด๋ ‡๊ฒŒ ๊ฐœ๋ฐœ์„ ํ•  ๋•Œ, ์ƒํ™ฉ์— ๋”ฐ๋ผ ์š”๊ตฌํ•˜๋Š” ์ปฌ๋Ÿผ์ด ๋‹ค๋ฅด๊ฑฐ๋‚˜ ํŠน์ •์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•  ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กœ์šด sql๋ฌธ์„ ๋งŒ๋“ค๊ณ  key๊ฐ’์„ ์„ค์ •ํ•ด์ค˜์•ผํ–ˆ๋‹ค. ๋™์  SQL์„ ๊ตฌํ˜„ํ•  ์ˆ˜๋Š” ์žˆ์ง€๋งŒ ๋งค์šฐ ๋ณต์žกํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋งˆ์ด๋ฐ”ํ‹ฐ์Šค๋ฅผ ์ด์šฉํ•˜๋ฉด ๋™์  SQL์„ JSTL์„ ์‚ฌ์šฉํ•˜์—ฌ ์ข€ ๋” ๊ฐ„๋‹จํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ๋Œ€ํ‘œ์ ์ธ ๋ฌธ๋ฒ•์„ ๋งˆ์ด๋ฐ”ํ‹ฐ์Šค ํ™ˆํŽ˜์ด์ง€๋ฅผ ์ฐธ์กฐํ•˜์—ฌ ์†Œ๊ฐœํ•˜๊ณ  ๊ตฌํ˜„ํ•˜๊ณ ์ž ํ•œ๋‹ค. 1. if ์กฐ๊ฑด๋ฌธ if๋Š” ์กฐ๊ฑด์ ˆ WHERE์˜ ์ผ๋ถ€๋กœ ํฌํ•จ๋˜์–ด ์กฐ๊ฑด๋ฌธ ์‚ฌ์šฉ์— ์œ ๋™์„ฑ์„ ์ค„ ์ˆ˜ ์žˆ๋‹ค. ์•„๋ž˜ ์กฐ๊ฑด๋ฌธ์€ ๊ฒŒ์‹œํŒ ํ…Œ์ด๋ธ”์—์„œ ๊ฒŒ์‹œ๊ธ€์— ๋Œ€ํ•œ ๋ชจ๋“  ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” sql๋ฌธ์ด๋‹ค. ํ•ด๋‹น sql๋ฌธ์€ ์‚ญ์ œ๋˜์ง€ ์•Š์€ ๋ชจ๋“  ๊ฒŒ์‹œ๋ฌผ ์ •๋ณด๋ฅผ ๋ถˆ..

๐ŸŒฑSPRING 2023. 5. 3. 16:59
Spring @RequestMapping์ด๋ž€? ์ž‘์„ฑ๋ฐฉ๋ฒ•, ์˜ˆ์‹œ

1. @RequestMapping์ด๋ž€ @RequestMapping์€ ํด๋ผ์ด์–ธํŠธ์ด ์š”์ฒญ(url)์— ๋งž๋Š” ํด๋ž˜์Šค๋‚˜ ๋ฉ”์„œ๋“œ๋ฅผ ์—ฐ๊ฒฐ์‹œ์ผœ์ฃผ๋Š” ์–ด๋…ธํ…Œ์ด์…˜์ด๋‹ค. ์ด ์–ด๋…ธํ…Œ์ด์…˜์€ ๊ทธ ์œ„์น˜์— ๋”ฐ๋ผ ์˜๋ฏธ๊ฐ€ ๋‹ค๋ฅด๋‹ค. ํด๋ž˜์Šค ๋ ˆ๋ฒจ : ๊ณตํ†ต ์ฃผ์†Œ ๋ฉ”์„œ๋“œ ๋ ˆ๋ฒจ : ๊ณตํ†ต ์ฃผ์†Œ ์™ธ ๋‚˜๋จธ์ง€ ํ•˜์œ„ ์ฃผ์†Œ ๋‹จ, ํด๋ž˜์Šค ๋ ˆ๋ฒจ์— @RequestMapping์ด ์—†๋‹ค๋ฉด, ๋ฉ”์„œ๋“œ ๋ ˆ๋ฒจ์€ ๋‹จ๋… ์š”์ฒญ ์ฒ˜๋ฆฌ ์ฃผ์†Œ์ด๋‹ค. 2.@RequestMapping ์ž‘์„ฑ ๋ฐฉ๋ฒ• @RequestMapping("url") : ์š”์ฒญ๋ฐฉ์‹(GET/POST)์— ๊ด€๊ณ„์—†์ด url์ด ์ผ์น˜ํ•˜๋Š” ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค. @RequestMapping(value = "url", method = RequestMethod.Get | POST) : ์ง€์ •๋œ ์š”์ฒญ ๋ฐฉ์‹์— ๋”ฐ๋ผ ์ฒ˜๋ฆฌํ•œ๋‹ค. ์š”์ฒญ ๋ฐฉ์‹์— ๊ด€๊ณ„์—†์ด ..

๐ŸŒฑSPRING 2023. 4. 25. 20:11
ํ”„๋ ˆ์ž„์›Œํฌ(Framework)์™€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(Library)์˜ ์ฐจ์ด์ 

1. ํ”„๋ ˆ์ž„์›Œํฌ(Framework)๋ž€? ๊ฐœ๋ฐœ์ž๊ฐ€ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ฐœ๋ฐœํ•จ์— ์žˆ์–ด ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ฐœ๋ฐœ ์‹œ๊ฐ„์„ ์ค„์ด๊ณ , ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ์„ ์ฆ๊ฐ€ ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์ผ๋ จ์˜ ํด๋ž˜์Šค ๋ฌถ์Œ์ด๋‚˜ ๋ผˆ๋Œ€, ํ‹€์„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ˜•ํƒœ๋กœ ์ œ๊ณต๋˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. ์ œ์–ด์˜ ์—ญ์ „ ๊ฐœ๋…์ด ์ ์šฉ๋œ ๋Œ€ํ‘œ์ ์ธ ๊ธฐ์ˆ ์ด๋‹ค. 1) ํ”„๋ ˆ์ž„์›Œํฌ์˜ ํŠน์ง• ๊ฐœ๋ฐœ์ž๊ฐ€ ๋”ฐ๋ผ์•ผ ํ•˜๋Š” ๊ฐ€์ด๋“œ๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ”์œ„๊ฐ€ ์ •ํ•ด์ ธ์žˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ๋„๊ตฌ , ํ”Œ๋กœ๊ทธ์ธ๋“ค์„ ์ง€์›ํ•œ๋‹ค. 2) ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์žฅ๋‹จ์  ์žฅ์  ๊ฐœ๋ฐœ ์‹œ๊ฐ„์„ ์ค„์ผ ์ˆ˜ ์žˆ์Œ ์ •ํ˜•ํ™” ๋˜์–ด ์žˆ์–ด ์ผ์ •์ˆ˜์ค€ ์ด์ƒ์˜ ํ’ˆ์งˆ์„ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ์Œ ์œ ์ง€ ๋ณด์ˆ˜๊ฐ€ ์‰ฌ์›€ ๋‹จ์  ๋„ˆ๋ฌด ์˜์กดํ•˜๋ฉด ๊ฐœ๋ฐœ์ž๋“ค์˜ ๋Šฅ๋ ฅ์ด ๋–จ์–ด์ ธ์„œ ์Šค์Šค๋กœ ์ง์ ‘ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ์ด ์–ด๋ ค์›Œ์ง ์Šต๋“์— ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆผ 3) ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์ข…๋ฅ˜ 2. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(..

๐ŸŒฑSPRING 2023. 4. 21. 15:50