๋ชฉ๋ก๐ฑSPRING (31)
Coding Planet
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 ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ค...
1. Maven์ด๋? Maven์ ์๋ฐ ๊ธฐ๋ฐ ํ๋ก์ ํธ์ ๋น๋, ์ข ์์ฑ ๊ด๋ฆฌ ๋ฐ ํ๋ก์ ํธ ๊ด๋ฆฌ๋ฅผ ์ํ ๋๊ตฌ์ด๋ค. Apache ์ํํธ์จ์ด ์ฌ๋จ์ ์ํด ๊ฐ๋ฐ๋์์ผ๋ฉฐ, ๋๋ฆฌ ์ฌ์ฉ๋๋ ๋น๋ ๋๊ตฌ ์ค ํ๋์ด๋ค. Maven์ ์ฌ์ฉํ๋ฉด ํ๋ก์ ํธ์ ๋น๋ ํ๋ก์ธ์ค๋ฅผ ์๋ํํ ์ ์๋ค. Maven์ ํ๋ก์ ํธ์ ๊ตฌ์กฐ๋ฅผ ์ ์ํ๋ ํ๋ก์ ํธ ๊ฐ์ฒด ๋ชจ๋ธ(Project Object Model, POM)์ ์ฌ์ฉํ๋ค. POM์ ํ๋ก์ ํธ์ ์ข ์์ฑ, ๋น๋ ์ค์ , ํ๋ฌ๊ทธ์ธ ๋ฑ์ ์ ์ํ๋ XML ํ์ผ์ด๋ค. Maven์ POM ํ์ผ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ก์ ํธ๋ฅผ ๋น๋ํ๊ณ ํ์ํ ์ข ์์ฑ์ ์๋์ผ๋ก ๋ค์ด๋ก๋ํ์ฌ ๊ด๋ฆฌํ๋ค. 2. Maven ์ฌ์ฉํ์ฌ POM.XML์ DI ์ถ๊ฐํ๊ธฐ Maven์ ์ค์์ ์ฅ์(Central Repository, ์ ์ฌ์ง์ ์ฌ์ดํธ)์์ ..
1. root-context.xml web.xml ํ์ผ์์ ๊ฐ์ฅ ๋จผ์ ์ฝ์ด๋ค์ด๋ ์ค์ ํ์ผ ํ๋ก์ ํธ ์ ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ์์์ ์์ฑํ๊ณ ์ค์ ํ๋ ํ์ผ DB ์ฐ๊ฒฐ ๊ด๋ จ ์ ๋ณด, ํธ๋์ญ์ ์ฒ๋ฆฌ, ํ์ผ ์ ๋ก๋ ๋ฑ์ ์์ฑํ๋ค. Spring ์ ํ๋ฆฌ์ผ์ด์ ์ปจํ ์คํธ๋ ์คํ๋ง์์ ์ ๊ณตํ๋ ์ปจํ ์ด๋๋ก, ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ํ์ํ ๊ณณ์์ DI(Dependency Injection)๋ก ์ฃผ์ ํ ์ ์๋ค. Spring ์ ํ๋ฆฌ์ผ์ด์ ์ปจํ ์คํธ๋ ์คํ๋ง์ ํต์ฌ์ ์ธ ๊ธฐ๋ฅ ์ค ํ๋์ด๋ค. ์ด๋ฌํ ์ปจํ ์คํธ๋ฅผ ์ค์ ํ๋๋ฐ ์ฌ์ฉ๋๋ ํ์ผ์ root-context.xml, servlet-context, applicationContext.xml ๋ฑ์ด ์๋ค. ์ด ์ค root-context.xmlํ์ผ์ ์ฃผ๋ก ์ ์ญ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ค์ ์ ๋ณด๋ฅผ ์ ์ํ๊ณ ser..
1. Mybatis-confing.xml ์ ๋ฌธ ์ด ํ์ผ์ MyBatis ์คํ ์ ํ์ํ ์ค์ ์ ๋ณด๋ฅผ ๋ด๊ณ ์์ผ๋ฉฐ, MyBatis ํ๋ก์ ํธ์์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์ค์ ํ์ผ์ด๋ค. MyBatis-config.xml ํ์ผ์ ํ๋ก์ ํธ์ ๋ฆฌ์์ค ํด๋์ ์์นํ๋ฉฐ, MyBatis๊ฐ ์คํ๋ ๋ ํด๋น ํ์ผ์ ์ ๋ณด๋ฅผ ์ฝ์ด์ ์ค์ ์ ๊ตฌ์ฑํ๋ค. 2. Mybatis-confing.xml ๋ฏ์ด๋ณด๊ธฐ 1. Settings ์์๋ MyBatis ์ ์ญ ์ค์ ์ ๊ตฌ์ฑํ๋๋ฐ ์ฌ์ฉ๋๋ค. ์ฃผ์ ์ค์ ์ ๋ค์๊ณผ ๊ฐ๋ค. cacheEnabled: MyBatis๊ฐ ์บ์๋ฅผ ์ฌ์ฉํ ์ง ์ฌ๋ถ๋ฅผ ์ค์ ํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ true์ ๋๋ค. lazyLoadingEnabled: ์ง์ฐ ๋ก๋ฉ์ ์ฌ์ฉํ ์ง ์ฌ๋ถ๋ฅผ ์ค์ ํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ false์ ๋๋ค. defaultStatementTi..
JDBC MVC ํจํด์ผ๋ก DB๋ฅผ ์์ , ํธ์งํ๊ธฐ ์ํด์ sql.xml์ SQL๋ฌธ์ ์ ์ฅํด๋๊ณ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ๋ค๋ง ์ด๋ ๊ฒ ๊ฐ๋ฐ์ ํ ๋, ์ํฉ์ ๋ฐ๋ผ ์๊ตฌํ๋ ์ปฌ๋ผ์ด ๋ค๋ฅด๊ฑฐ๋ ํน์ ์กฐ๊ฑด์ ์ถ๊ฐํ ๋๋ง๋ค ์๋ก์ด sql๋ฌธ์ ๋ง๋ค๊ณ key๊ฐ์ ์ค์ ํด์ค์ผํ๋ค. ๋์ SQL์ ๊ตฌํํ ์๋ ์์ง๋ง ๋งค์ฐ ๋ณต์กํ๋ค. ํ์ง๋ง ๋ง์ด๋ฐํฐ์ค๋ฅผ ์ด์ฉํ๋ฉด ๋์ SQL์ JSTL์ ์ฌ์ฉํ์ฌ ์ข ๋ ๊ฐ๋จํ๊ฒ ์ฒ๋ฆฌํ ์ ์๋ค. ๋ํ์ ์ธ ๋ฌธ๋ฒ์ ๋ง์ด๋ฐํฐ์ค ํํ์ด์ง๋ฅผ ์ฐธ์กฐํ์ฌ ์๊ฐํ๊ณ ๊ตฌํํ๊ณ ์ ํ๋ค. 1. if ์กฐ๊ฑด๋ฌธ if๋ ์กฐ๊ฑด์ WHERE์ ์ผ๋ถ๋ก ํฌํจ๋์ด ์กฐ๊ฑด๋ฌธ ์ฌ์ฉ์ ์ ๋์ฑ์ ์ค ์ ์๋ค. ์๋ ์กฐ๊ฑด๋ฌธ์ ๊ฒ์ํ ํ ์ด๋ธ์์ ๊ฒ์๊ธ์ ๋ํ ๋ชจ๋ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๋ sql๋ฌธ์ด๋ค. ํด๋น sql๋ฌธ์ ์ญ์ ๋์ง ์์ ๋ชจ๋ ๊ฒ์๋ฌผ ์ ๋ณด๋ฅผ ๋ถ..
1. @RequestMapping์ด๋ @RequestMapping์ ํด๋ผ์ด์ธํธ์ด ์์ฒญ(url)์ ๋ง๋ ํด๋์ค๋ ๋ฉ์๋๋ฅผ ์ฐ๊ฒฐ์์ผ์ฃผ๋ ์ด๋ ธํ ์ด์ ์ด๋ค. ์ด ์ด๋ ธํ ์ด์ ์ ๊ทธ ์์น์ ๋ฐ๋ผ ์๋ฏธ๊ฐ ๋ค๋ฅด๋ค. ํด๋์ค ๋ ๋ฒจ : ๊ณตํต ์ฃผ์ ๋ฉ์๋ ๋ ๋ฒจ : ๊ณตํต ์ฃผ์ ์ธ ๋๋จธ์ง ํ์ ์ฃผ์ ๋จ, ํด๋์ค ๋ ๋ฒจ์ @RequestMapping์ด ์๋ค๋ฉด, ๋ฉ์๋ ๋ ๋ฒจ์ ๋จ๋ ์์ฒญ ์ฒ๋ฆฌ ์ฃผ์์ด๋ค. 2.@RequestMapping ์์ฑ ๋ฐฉ๋ฒ @RequestMapping("url") : ์์ฒญ๋ฐฉ์(GET/POST)์ ๊ด๊ณ์์ด url์ด ์ผ์นํ๋ ์์ฒญ์ ์ฒ๋ฆฌํ๋ค. @RequestMapping(value = "url", method = RequestMethod.Get | POST) : ์ง์ ๋ ์์ฒญ ๋ฐฉ์์ ๋ฐ๋ผ ์ฒ๋ฆฌํ๋ค. ์์ฒญ ๋ฐฉ์์ ๊ด๊ณ์์ด ..
๋ณดํธ๋์ด ์๋ ๊ธ์ ๋๋ค.
๋ณดํธ๋์ด ์๋ ๊ธ์ ๋๋ค.
๋ณดํธ๋์ด ์๋ ๊ธ์ ๋๋ค.
1. ํ๋ ์์ํฌ(Framework)๋? ๊ฐ๋ฐ์๊ฐ ์ํํธ์จ์ด๋ฅผ ๊ฐ๋ฐํจ์ ์์ด ์ฝ๋๋ฅผ ๊ตฌํํ๋ ๊ฐ๋ฐ ์๊ฐ์ ์ค์ด๊ณ , ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ ์ฆ๊ฐ ์ํค๊ธฐ ์ํด ์ผ๋ จ์ ํด๋์ค ๋ฌถ์์ด๋ ๋ผ๋, ํ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํํ๋ก ์ ๊ณต๋๋ ๊ฒ์ ๋งํ๋ค. ์ ์ด์ ์ญ์ ๊ฐ๋ ์ด ์ ์ฉ๋ ๋ํ์ ์ธ ๊ธฐ์ ์ด๋ค. 1) ํ๋ ์์ํฌ์ ํน์ง ๊ฐ๋ฐ์๊ฐ ๋ฐ๋ผ์ผ ํ๋ ๊ฐ์ด๋๋ฅผ ์ ๊ณตํ๋ค. ๊ฐ๋ฐํ ์ ์๋ ๋ฒ์๊ฐ ์ ํด์ ธ์๋ค. ๊ฐ๋ฐ์๋ฅผ ์ํ ๋ค์ํ ๋๊ตฌ , ํ๋ก๊ทธ์ธ๋ค์ ์ง์ํ๋ค. 2) ํ๋ ์์ํฌ์ ์ฅ๋จ์ ์ฅ์ ๊ฐ๋ฐ ์๊ฐ์ ์ค์ผ ์ ์์ ์ ํํ ๋์ด ์์ด ์ผ์ ์์ค ์ด์์ ํ์ง์ ๊ธฐ๋ํ ์ ์์ ์ ์ง ๋ณด์๊ฐ ์ฌ์ ๋จ์ ๋๋ฌด ์์กดํ๋ฉด ๊ฐ๋ฐ์๋ค์ ๋ฅ๋ ฅ์ด ๋จ์ด์ ธ์ ์ค์ค๋ก ์ง์ ๊ฐ๋ฐํ๋ ๊ฒ์ด ์ด๋ ค์์ง ์ต๋์ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆผ 3) ํ๋ ์์ํฌ์ ์ข ๋ฅ 2. ๋ผ์ด๋ธ๋ฌ๋ฆฌ(..