2021. 11. 17. 16:47ใSpring
1. MyBatis
: MyBatis๋ ์๋ฐ ์ค๋ธ์ ํธ์ SQL๋ฌธ ์ฌ์ด์ ์๋ Mapping ๊ธฐ๋ฅ์ ์ง์ํ๋ ORM ํ๋ ์์ํฌ์ด๋ค.
- ํน์ง
1๏ธโฃ ์ฌ์ด ์ ๊ทผ์ฑ๊ณผ ์ฝ๋์ ๊ฐ๊ฒฐํจ
2๏ธโฃ SQL๋ฌธ๊ณผ ํ๋ก๊ทธ๋๋ฐ ์ฝ๋์ ๋ถ๋ฆฌ
3๏ธโฃ ๋ค์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ๊ตฌํ ๊ฐ๋ฅ (JAVA, C#, NET, RUBY)
2. MyBatis ์ฃผ์ ์ปดํฌ๋ํธ
-MyBatis3์ ์ฃผ์ ์ปดํฌ๋ํธ์ ์ญํ
1๏ธโฃ MyBatis ์ค์ ํ์ผ
: ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์ ์ฃผ์ ์ ๋ณด๋ Mapping ํ์ผ์ ๊ฒฝ๋ก ๋ฑ ๊ณ ์ ๋ ํ๊ฒฝ์ ๋ณด๋ฅผ ์ค์ ํ๋ค.
2๏ธโฃ SqlSessionFactoryBuilder
: MyBatis ์ค์ ํ์ผ์ ๋ฐํ์ผ๋ก SqlSessionFactory๋ฅผ ์์ฑํ๋ค.
3๏ธโฃ SqlSessionFactory
: SqlSession์ ์์ฑํ๋ค.
4๏ธโฃ SqlSession
: ํต์ฌ์ ์ธ ์ญํ ์ ํ๋ ํด๋์ค๋ก์ SQL ์คํ์ด๋ ํธ๋์ญ์ ๊ด๋ฆฌ๋ฅผ ์คํํ๋ค.
SqlSession Object๋ Thread-safe ํ์ง ์๊ธฐ ๋๋ฌธ์ thread๋ง๋ค ํ์์ ๋ฐ๋ผ ์์ฑํ๋ค.
5๏ธโฃ mapping ํ์ผ
: SQL๊ณผ OR Mapping์ ์ค์ ํ๋ค.
3. MyBatis-Spring์ ์ฃผ์ ์ปดํฌ๋ํธ
- MyBatis-Spring ์ฃผ์ ์ปดํฌ๋ํธ์ ์ญํ
1๏ธโฃ MyBatis ์ค์ ํ์ผ
: VO ๊ฐ์ฒด์ ์ ๋ณด๋ฅผ ์ค์ ํ๋ค.
2๏ธโฃ SqlSessionFactoryBean
: MyBatis ์ค์ ํ์ผ์ ๋ฐํ์ผ๋ก SqlSessionFactory๋ฅผ ์์ฑํ๋ค.
Spring Bean์ผ๋ก ๋ฑ๋กํด์ผํ๋ค.
3๏ธโฃ SqlSessionTemplate
: ํต์ฌ์ ์ธ ์ญํ ์ ํ๋ ํด๋์ค๋ก์ SQL ์คํ์ด๋ ํธ๋์ญ์ ๊ด๋ฆฌ๋ฅผ ์คํํ๋ค.
SqlSession ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๊ณ , Thread-safe ํ๋ค.
Spring Bean์ผ๋ก ๋ฑ๋กํด์ผํ๋ค.
4๏ธโฃ Mapping ํ์ผ
: SQL๋ฌธ๊ณผ OR Mapping์ ์ค์ ํ๋ค.
5๏ธโฃ Spring Bean ์ค์ ํ์ผ
: SqlSessionFactoryBean์ ํตํด Bean์ ๋ฑ๋กํ ๋ DataSource ์ ๋ณด์ MyBatis Config ํ์ผ ์ ๋ณด, Mapping ํ์ผ์ ์ ๋ณด๋ฅผ ํจ๊ป ์ค์ ํ๋ค.
SqlSessionTemplate์ Bean์ผ๋ก ๋ฑ๋กํ๋ค.
4. MyBatis, MyBatis-Spring ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น
https://mvnrepository.com/artifact/org.mybatis/mybatis
https://mvnrepository.com/artifact/org.mybatis/mybatis-spring
5. MyBatis-Spring์ ์ฌ์ฉํ ์์
์ง๊ธ๊น์ง ๊ณ์ Spring ๊ณต๋ถ๋ฅผ ํ ๋ ์ฌ์ฉํ๋ ์ฌ์ฉ์ ๊ด๋ฆฌ ํ๋ก์ ํธ๋ฅผ ์ด์ฉํด์ MyBatis-Spring์ผ๋ก ๊ตฌํํ ๊ฒ์ด๋ค.
1๏ธโฃ MyBatis Configuration ํ์ผ
: Vo ๊ฐ์ฒด ์ ๋ณด๋ฅผ ์ค์ ํ๋ค.
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
์ด๊ฑฐ ๋ณต์ฌํด์ ์ฌ์ฉํ์๊ธธ.. ์๋ชป์ฐ๋ฉด <configuration> ํ๊ทธ ์ฌ์ฉํ๋ ค๋ฉด ์๋ฌ ๋ฐ์ํจ,,
2๏ธโฃ Mapping ํ์ผ
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
์ด๊ฒ๋ ๋ณต์ฌํด์ ์ฐ์ธ์ฅ
๊ทธ๋ฆฌ๊ณ #{} ์ VO ์์ ์ค์ ํ ์ด๋ฆ์ผ๋ก ์ ๋ฃ์ด์ผํ๋ค.
ํ๊ดํ ์น ํ ๋ถ๋ถ์ด VO ๊ฐ์ฒด์์๋ userid๊ฐ ์๋ userId๋ก ์ค์ ํด๋์ ์๋ฌ๊ฐ ๋ฐ์ํ์๋ค ใ
3๏ธโฃ Spring Bean ์ค์ ํ์ผ
dataSource์๋
configLocation์๋ Vo๊ฐ์ฒด ์ ๋ณด ์ค์ ํ ํ์ผ ๊ฒฝ๋ก๋ฅผ
mapperLocations์๋ Mapping ํ์ผ ๊ฒฝ๋ก
4๏ธโฃ DAO ๊ตฌํ ํด๋์ค
userNS๋ mapping ํ์ผ์์ ์ค์ ํ namespace์ด๋ค.
๊ทธ๋ฆฌ๊ณ ๊ฐ๊ฐ์ id ๊ฐ์ผ๋ก dao ํด๋์ค๋ฅผ ๊ตฌํํ๋ค.
6. MyBatis-Spring DAO ์์ ํ ์คํธ
1๏ธโฃ config ํ ์คํธ
2๏ธโฃ selectUserById ํ ์คํธ
3๏ธโฃ insertUser ํ ์คํธ
4๏ธโฃ selectUserList ํ ์คํธ
5๏ธโฃ updateUser ํ ์คํธ
6๏ธโฃ deleteUser ํ ์คํธ