๐ ๊ด๋ จ ๊ธ
- [Spring ์น ํ๋ก์ ํธ] ์๋ฐ ํ๋ซํผ GOING
- [Spring MVC ํ๋ก์ ํธ ๋ฆฌํฉํ ๋ง] 1. ๊ตญ๋น์ง์๊ต์ก์ ํ๊ณ
- [Spring MVC ํ๋ก์ ํธ ๋ฆฌํฉํ ๋ง] 2. SqlSessionFactory -> SqlSessionTemplate
- [Spring MVC ํ๋ก์ ํธ ๋ฆฌํฉํ ๋ง] 3. ์์กด์ฑ ์ฃผ์ ์์
- [Spring MVC ํ๋ก์ ํธ ๋ฆฌํฉํ ๋ง] 4. @Service, ๋น์ฆ๋์ค ๋ก์ง ๋ถ๋ฆฌ
- [Spring/์คํ๋ง] JUnit์ ์ด์ฉํ ๋จ์ ํ ์คํธ, @Test
- ์นํ๋ก์ ํธ ๋ฌธ์์ธ์ฆ ๊ตฌํํ๊ธฐ with ๋ค์ด๋ฒ ํด๋ผ์ฐ๋ ํ๋ซํผ
- [Java/์๋ฐ] ๋ ์ง-Date์ ๋ชจ๋ ๊ฒ (ํ์ฌ-๋ด์ผ ๋ ์ง, Date ํฌ๋งท ๋ณํ, ๋ ์ง ์ฐจ์ด ๊ณ์ฐ, ๋ํ๊ธฐ, ๋นผ๊ธฐ)
- ์๋ฐ ์ธ๋ฏธ ํ๋ก์ ํธ - ์๋ฐ ํ๋ซํผ GOING
โก๏ธ๋ฆฌํฉํ ๋ง Before -> After
๐ Before
์คํ๋ง์์ SqlSessionFactory ๊ฐ์ฒด๋ก MyBatis๋ฅผ ์ฐ๋ํด ์ฌ์ฉ์ค์ด์์ต๋๋ค.
์ฟผ๋ฆฌ ์ฌ์ฉ ์ ์ธ์ ์ ์์ฑํ๊ณ close ํด์ฃผ์ด์ผ ํ๋ ์ฝ๋๊ฐ ๋ฐ๋ณต๋์์ต๋๋ค.
๐ After
์คํ๋ง์์ ์ฌ์ฉ ๊ฐ๋ฅํ SqlSessionFactoryBean๊ณผ SqlSessionTemplate์
dispatcher-servlet.xml์์ ๋น ๋ฑ๋ก๊ณผ ์์กด์ฑ ์ฃผ์ ์ ํด์ฃผ์์ต๋๋ค.
Dao ํ์ผ์์ SqlSessionTemplate ๋น์ ์ฃผ์ ํด์ฃผ์๊ณ
์ธ์ ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ณ ๋ซ๋ ์ค๋ณต ์ฝ๋๋ค์ ์ ๋ฆฌํจ์ผ๋ก์จ ์์์ ์ ์ฝ๊ณผ ๊ฐ๋ ์ฑ์ ์ฑ๊ฒผ์ต๋๋ค.
(ํธ์)
โก๏ธ๋ฆฌํฉํ ๋ง ์ด์
๐ SqlSessionFactory์ SqlSessionTemplate ์ฐจ์ด
MyBatis์์๋ SqlSession์ ์์ฑํ๊ธฐ ์ํด SqlSessionFactory๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ด๋ ๊ธฐ๋ณธ์ ์ธ ์ธ์ ๋ง ์์ฑํด์ฃผ๋ ๊ธฐ๋ฅ์ ํ๊ธฐ ๋๋ฌธ์ ์ธ์ ์ฌ์ฉ ํ ๋ซ์์ฃผ๋ ๋ฑ,
๊ด๋ฆฌํด์ผ ํ๊ณ ์ค๋ณต๋๋ ์ฝ๋๊ฐ ๋์ด๋๊ฒ ๋ฉ๋๋ค.
Spring์์๋ MyBatis์ ์ฐ๋ํ๊ธฐ ์ํด SqlSessionFactoryBean๊ณผ SqlSessionTemplate์ ์ ๊ณตํฉ๋๋ค.
์ด๋ฅผ ์ด์ฉํ๊ฒ ๋๋ค๋ฉด ์คํ๋ง ํธ๋์ ์ ์ค์ ์ ๋ฐ๋ผ ์๋์ผ๋ก ์ปค๋ฐ๊ณผ ๋กค๋ฐฑ์ ์ํํฉ๋๋ค.
๋ํ ๊ธฐ์กด ์ธ์ ์ Thread-Safe๋ฅผ ์ง์ํ์ง ์์ ์์ฒญ๋ง๋ค ๊ฐ์ฒด ์์ฑ๊ณผ close๋ฅผ ํด์ฃผ์ด์ผํ๋ ๋ฐ๋ฉด,
SqlSessionTemplate๋ ๊ทธ๋ดํ์ ์์ด Thread-Safe๋ฅผ ์ง์ํ๊ธฐ ๋๋ฌธ์ ์ฃผ์ ํ๋ฒ์ผ๋ก ํด๊ฒฐ๋ฉ๋๋ค.
์ด๋ ์ปค๋ฅ์ ํ(DBCP)์๋ ๊ด๋ จ์ด ๋์ด์๋๋ฐ ์ด ๋ถ๋ถ์ ์์ง ๊น๊ฒ ๊ณต๋ถํ์ง ์์ ๋ ์ฐพ์๋ณผ ์์ ์ ๋๋ค.
๋๊ธ