Spring MyBatis [1] MyBatis ๊ฐœ๋…, MyBatis-Spring ์ปดํฌ๋„ŒํŠธ ์—ญํ• , MyBatis-Spring ๊ฐ„๋‹จํ•œ ์‚ฌ์šฉ์ž ๊ด€๋ฆฌ ์˜ˆ์ œ

2021. 11. 17. 16:47ใ†Spring

728x90

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 ํ…Œ์ŠคํŠธ 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90