๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

STUDY/SPRING

Spring - Legacy Project ๋งŒ๋“ค๊ธฐ 2(mybatis - db ์—ฐ๊ฒฐ)

๋ฐ˜์‘ํ˜•
MyBatis(iBatis)
  ๋งˆ์ด๋ฐ”ํ‹ฐ์Šค๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง€์ •ํ•œ SQL, ์ €์žฅํ”„๋กœ์‹œ์ € ๊ทธ๋ฆฌ๊ณ  ๋ช‡๊ฐ€์ง€ ๊ณ ๊ธ‰ ๋งคํ•‘์„ ์ง€์›ํ•˜๋Š” ํผ์‹œ์Šคํ„ด์Šค ํ”„๋ ˆ์ž„์›Œํฌ
  JDBC๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ์ƒ๋‹น๋ถ€๋ถ„์˜ ์ฝ”๋“œ์™€ ํŒŒ๋ผ๋ฏธํ„ฐ ์„ค์ • ๋ฐ ๊ฒฐ๊ณผ ๋งคํ•‘์„ ๋Œ€์‹ ํ•ด์ค€๋‹ค.
  DB ๋ ˆ์ฝ”๋“œ์— ์›์‹œํƒ€์ž…๊ณผ Map ์ธํ„ฐํŽ˜์ด์Šค, ์ž๋ฐ” POJO๋ฅผ ์„ค์ •ํ•ด์„œ ๋งคํ•‘ํ•˜๊ธฐ ์œ„ํ•ด XML๊ณผ ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉ

DB/SQL ๊ด€๋ จ ๋™์ž‘์„ ์‰ฝ๊ฒŒ ์ฒ˜๋ฆฌํ•ด์ฃผ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ = SQL Mapper ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
  - DB์—ฐ๊ฒฐ, Try-Catch-finally ๊ตฌ๋ฌธ, pstmt, rs ๊ตฌ๋ฌธ์„ ํ›จ์”ฌ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์ฒ˜๋ฆฌ
  - spring๊ณผ ์—ฐ๋™์ด ๋งค์›… ํŽธํ•จ (MyBatis-spring ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ)
  - ๋™์  sql ๊ตฌ๋ฌธ ์‚ฌ์šฉ ๊ฐ€๋Šฅ(= ์ฝ”๋“œ ์ œ์–ด)

*MyBatis ์‚ฌ์šฉ๋ฐฉ์‹
 1. XML๋งŒ ์‚ฌ์šฉํ•˜์—ฌ SQL๊ตฌ๋ฌธ์„ ์ฒ˜๋ฆฌ, DAO์—์„œ๋Š” XML์ฝ”๋“œ๋ฅผ ์ฐพ์•„์„œ ์‹คํ–‰ํ•จ
     ์žฅ์  : SQL ์ฟผ๋ฆฌ ์ˆ˜์ • ๋ฐ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ํŽธํ•จ
     ๋‹จ์  : ๊ฐœ๋ฐœ ๋ถ„๋Ÿ‰์ด ์ฆ๊ฐ€, ๋ณต์žก๋„ ์ฆ๊ฐ€
 2. ์–ด๋…ธํ…Œ์ด์…˜ & ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•œ SQL๊ตฌ๋ฌธ ์‚ฌ์šฉ
     ์žฅ์  : DAO๊ฐ์ฒด ์—†์ด๋„ ๊ฐœ๋ฐœ ๊ฐ€๋Šฅ, ์ƒ์‚ฐ์„ฑ ์ฆ๊ฐ€
     ๋‹จ์  : SQL ์• ๋„ˆํ…Œ์ด์…˜์œผ๋กœ ์ƒ์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜์ •ํ•  ๋•Œ ๋งˆ๋‹ค ๋งค๋ฒˆ ์ปดํŒŒ์ผ์„ ํ•ด์•ผํ•จ
 3. ์ธํ„ฐํŽ˜์ด์Šค + XML ๋ชจ๋‘ ํ™œ์šฉ
     ์žฅ์  : ๊ฐ„๋‹จํ•œ ๊ตฌ๋ฌธ์€ ์• ๋…ธํ…Œ์ด์…˜, ๋ณต์žกํ•œ ๊ตฌ๋ฌธ์€ XML์ฝ”๋“œ๋กœ ํ‘œํ˜„ํ•จ
     ๋‹จ์  : ๊ฐœ๋ฐœ์ž์— ๋”ฐ๋ผ ๊ฐ„๋‹จ/๋ณต์žก์˜ ๊ธฐ์ค€์ด ๋‹ค๋ฆ„

1. ๊ธฐ๋ณธ์„ค์ • pom.xml

      : MVNREPOSITORY ์—์„œ Mysql connector, myBatis, myBatisSpring, spring-jdbc, spring test-context framework ๋‹ค์šด

2. Maven ์—…๋ฐ์ดํŠธ

 

3. root-context.xml์„ค์ •

  - DataSource ๊ฐ์ฒด

    DataSource ๊ฐ์ฒด๋Š” DB์˜ ๋ชจ๋“  ๋ฆฌ์†Œ์Šค๋ฅผ ์ง€์นญํ•˜๋Š” ํฌ๊ด„์ ์ธ ๊ฐœ๋…์œผ๋กœ JDBC 2.0 ํ‘œ์ค€์˜ ํ™•์žฅ API๋กœ ์ฒ˜์Œ ์†Œ๊ฐœ๋˜์—ˆ์Œ

    =JDBC๋ฅผ ์ด์šฉํ•ด DB์— ์—ฐ๊ฒฐ ํ•ด์ฃผ๋Š” ๊ฐ์ฒด!

  * DataSource ๊ฐ์ฒด ๊ด€๋ จ ๋‚ด์šฉ

 ** ์—ฐ๊ฒฐ๋๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ!

src/main/resource์— mybatis-config.xml ํŒŒ์ผ ์ƒ์„ฑ > dtd ์ถ”๊ฐ€!

 - sqlSessionFactory ๊ฐ์ฒด ์ƒ์„ฑ

    : DB์—ฐ๊ฒฐ, mybatis ์„ค์ •, mapper ์—ฐ๊ฒฐ ํ•ด์ฃผ๋Š” ๊ฐ์ฒด

4. Mybatis ์—ฐ๊ฒฐ๋๋Š”์ง€ ํ…Œ์ŠคํŠธํ•˜๊ธฐ

  *datasource๊ฐ์ฒด, sqlsessionFactory ๊ฐ์ฒด ์ƒ์„ฑ

  * ๋งˆ์ด๋ฐ”ํ‹ฐ์Šค ์—ฐ๊ฒฐ ํ…Œ์ŠคํŠธ

  * ๋งˆ์ด๋ฐ”ํ‹ฐ์Šค ์—ฐ๊ฒฐ ์ฒดํฌ

    > @test ์–ด๋…ธํ…Œ์ด์…˜ ๊ผญ ๋ถ™์ด๊ธฐ!!

 

5. Mapper ๋งŒ๋“ค๊ธฐ

  - scr/main/resource ๋ฐ‘์— mapper ํด๋” ์ƒ์„ฑ > memberMapper.xml ์ƒ์„ฑ

  - dtd ๊ฐ€์ ธ์˜ค๊ธฐ

  - mapper namespace ์ƒ์„ฑ > ๋‚ด๊ฐ€ ๋งŒ๋“  ์ด๋ฆ„ : ์™ธ๋ถ€์—์„œ ํ˜ธ์ถœํ•  ๋•Œ ์‚ฌ์šฉ

  - ์ง€๊ธˆ ์‹œ๊ฐ„์„ ๊ฐ€์ ธ์˜ค๋Š” sql ์ž‘์„ฑ

6. ์ด mapper๋ฅผ ์ธ์‹ํ•  ์ˆ˜ ์žˆ๊ฒŒ root-context.xml์—์„œ ๊ฒฝ๋กœ ์„ค์ •

7. sqlSessionTemplate ๊ฐ์ฒด ์ƒ์„ฑ

 8. ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ์ƒ์„ฑ

 9. ํ…Œ์ด๋ธ” ์ƒ์„ฑ & ์„ค์ •

 10. ๋„๋ฉ”์ธ ๊ฐ์ฒด ์„ค๊ณ„, ํด๋ž˜์Šค ์ƒ์„ฑ(MemberVO) & getter,setter ์ƒ์„ฑ

11. root-context.xml์— persistence ํŒจํ‚ค์ง€ ์ถ”๊ฐ€

12. DAO์ธํ„ฐํŽ˜์ด์Šค ์ƒ์„ฑ(MemberDAO)  & ์ธํ„ฐํŽ˜์ด์Šค ์•ˆ์— ๋‚ด๊ฐ€ ํ•„์š”ํ•œ ๋™์ž‘ ๊ตฌํ˜„(์ถ”์ƒ๋ฉ”์„œ๋“œ๋กœ)

13. DAO๊ฐ์ฒด ์ƒ์„ฑ(/SpringMVC/src/main/java/com/itwillbs/persistence/MemberDAOImpl.java)
   =>memberDAO๋ฅผ ์ž„ํ”Œ๋ฆฌ๋จผ์ธ ํ–ˆ์Œ 

@repository ํ•˜๋ฉด ์˜†์— Sํ‘œ์‹œ

14. ์ž„ํ”Œ๋ฆฌ๋จผ์ธ ์— ๋””๋น„์—ฐ๊ฒฐ์ •๋ณด๊ฐ€ ํ•„์š”ํ•จ => ์˜์กด์ฃผ์ž…

    - ์ฟผ๋ฆฌ ๊ตฌ๋ฌธ ๊ฐ€์ ธ์˜ค๊ธฐ

   - mapper ์ฃผ์†Œ๊ฐ’ ์ €์žฅ

   - ๊ฒฐ๊ณผ ๊ฐ’ ์ €์žฅ

15. ํ…Œ์ŠคํŠธํ•˜๊ธฐ

์—๋Ÿฌ...

>>>root-context์—์„œ๋Š” mappers๋กœ ์ž‘์„ฑํ•ด๋†จ๋Š”๋ฐ

์‹ค์ œ ํด๋”๋ช…์„ mapper๋กœ ํ•ด๋†จ์—ˆ์Œ....

๋‹ค์‹œ ํ…Œ์ŠคํŠธํ•˜๋ฉด ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•จ

 

 

 

๋ฐ˜์‘ํ˜•