Mybatis FrameWork

๊ฐ•ํƒœ์„ยท2022๋…„ 10์›” 23์ผ
0

JSP

๋ชฉ๋ก ๋ณด๊ธฐ
11/13

๐Ÿฆ Mybatis FrameWork

DB์—ฐ๊ฒฐ ๋ฐฉ๋ฒ•์ค‘ Mybatis์— ๋Œ€ํ•ด ๋ฐฐ์›Œ๋ดค๋‹ค.
์ง€๊ธˆ๊นŒ์ง€ 3๊ฐ€์ง€์˜ DB์—ฐ๊ฒฐ ๋ฐฉ๋ฒ•(์›์‹œ์ , dbcp, mybatis)์„ ๋ฐฐ์› ๋Š”๋ฐ, ์•„์ง mybatis framework๊ฐ€ ๊ฐ€์žฅ ์ต์ˆ™ํ•˜์ง€ ์•Š๋‹ค.
ํ•˜์ง€๋งŒDB์—ฐ๊ฒฐ์—์„  ๋นผ๋†“์„ ์ˆ˜ ์—†๋Š” ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ํ•˜๋‹ˆ ์™„์ „ํžˆ ์ฒด๋“๋ ๋•Œ ๊นŒ์ง€ ๋ฐ˜๋ณต ํ•™์Šตํ•ด๋ณด์ž.
๊ทธ๋Ÿผ Mybatis FrameWork์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ•˜์ž!

Mybatis ์„ค์น˜ ๋ฐ jar ์„ค์ •

Mybatis-3.5.11 ์„ค์น˜ url

Mybatis FrameWork๋ฅผ ๋ฐฐ์šฐ๊ธฐ ์•ž์„œ mybatis๋ฅผ ์„ค์น˜ํ•˜๊ณ  ๋‚ด๋ถ€์˜ jarํŒŒ์ผ์„ WEB-INF์˜ lib ํด๋” ๋ฐ ํด๋ž˜์ŠคํŒจ์Šค์— ๋“ฑ๋กํ•ด์ค˜์•ผ ํ•œ๋‹ค.

์„ค์น˜ํ›„ ์••์ถ•์„ ํ’€๊ณ  ํด๋”์— ๋“ค์–ด๊ฐ€๋ณด์ž.
mybatis-3.5.11.jar๋ฅผ ํด๋ž˜์ŠคํŒจ์Šค , lib์— ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค.
๋˜ํ•œ pdf ํŒŒ์ผ์ด ์žˆ๋Š”๋ฐ, mybatis ์‚ฌ์šฉ๋ฒ•์ด ์•„์ฃผ ์นœ์ ˆํ•˜๊ฒŒ ๋‚˜์™€ ์žˆ๋Š” ์„ค๋ช…์„œ์ด๋‹ค. ์ฐธ๊ณ ํ•˜๋„๋ก ํ•˜์ž!


Mybatis FrameWork

์„ค์น˜์™€ ์„ธํŒ…์ด ๋˜์—ˆ๋‹ค๋ฉด ์ด์ œ Mybatis๋ฅผ ์ด์šฉํ•ด DB์—ฐ๊ฒฐ์„ ํ•ด๋ณด๋„๋ก ํ•˜์ž!
Mybatis๋Š” ์‚ฌ์šฉ๋ฒ•์ด ์ •ํ•ด์ ธ ์žˆ๋‹ค. ์ฆ‰ FrameWork๊ฐ€ ์žˆ๋‹ค!

1. config.xml (ํ™˜๊ฒฝ์„ค์ • ํŒŒ์ผ) ์ƒ์„ฑ , ์„ค์ •

Mybatis ํ™˜๊ฒฝ์„ค์ • ํŒŒ์ผ(xml)์„ ๋งŒ๋“ค์–ด์„œ ํ™˜๊ฒฝ ์„ค์ •์„ ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.
  • mybatis ์„ค์น˜ํด๋”์— ์žˆ๋Š” pdf ํŒŒ์ผ (์„ค๋ช…์„œ) 7ํŽ˜์ด์ง€์— ์žˆ๋Š” ๋‚ด์šฉ ๋ถ™์—ฌ๋„ฃ๊ธฐ ํ›„ ${?} ๋‚ด์šฉ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๊ฐ’์œผ๋กœ ์„ค์ • (driver, url, username, password ๋“ฑ db์—ฐ๊ฒฐ์— ํ•„์š”ํ•œ ๊ฐ’๋“ค) ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

์‹ค์ œ pdf 7ํŽ˜์ด์ง€์— ์žˆ๋Š” ๋‚ด์šฉ์ด๋‹ค. ๊ทธ๋ƒฅ ๊ธ์–ด์„œ ๋ถ™์—ฌ์ฃผ๊ณ  property๋“ค๋งŒ ๋‚ด ํ™˜๊ฒฝ์— ๋งž๊ฒŒ ์ˆ˜์ •ํ•ด์ฃผ์ž.

10๋ฒˆ ~ 13๋ฒˆ ๋ผ์ธ์„ ๋ณด๋ฉด property ์˜ value๋ฅผ ์œ„์™€ ๊ฐ™์ด ์„ค์ •ํ•œ ๊ฑธ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
์›์‹œ์  db์—ฐ๊ฒฐ๋•Œ๋„ ์œ„์™€ ๊ฐ™์ด driver, url, username, password๋ฅผ ์„ค์ •ํ•ด์คฌ์—ˆ๋Š”๋ฐ ๋˜‘๊ฐ™๋‹ค๊ณ  ๋ณด๋ฉด ๋œ๋‹ค!
19๋ฒˆ ๋ผ์ธ์˜ mappers ํƒœ๊ทธ์•ˆ์˜ mapper ํƒœ๊ทธ๋Š” ์ฟผ๋ฆฌ๋ฌธ ์ž‘์„ฑํ•˜๋Š” xmlํŒŒ์ผ ๊ฒฝ๋กœ์ด๋‹ค. (4๋ฒˆ์—์„œ ์ž์„ธํžˆ)

2. SqlSessionFactory

์ž ์ด์ œ Mybatis๋ฅผ ์‚ฌ์šฉํ•ด์„œ DB์—ฐ๊ฒฐ์„ ํ• ๊ฑด๋ฐ, mybatis jar์— ๋“ค์–ด์žˆ๋Š” ๋ช‡๊ฐ€์ง€ ๊ฐ์ฒด์™€ ๊ทธ ๊ฐ์ฒด์˜ ๋ฉ”์„œ๋“œ๋“ค์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.
  • ๊ฐ€์žฅ ๋จผ์ € SqlSessionFactory๋ผ๋Š” ๊ฐ์ฒด๋ฅผ ๋ฐ›์•„์˜ฌ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด ์ค˜์•ผ ํ•˜๋Š”๋ฐ, ์•„๋ž˜์™€ ๊ฐ™์ด ๋งŒ๋“ค์–ด ์ค€๋‹ค.

SqlSessionFactory ์˜ openSession() ๋ฉ”์„œ๋“œ๋Š” SqlSession ์„ ๋ฆฌํ„ดํ•ด์ฃผ๊ณ ,
SqlSession ๋Š” ๊ฐ ์ฟผ๋ฆฌ๋ฌธ์„ ๋‚ ๋ฆด ์ˆ˜ ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
sqlsession.selsect() , sqlsession.insert() ๋“ฑ

SqlSessionFactory ์™€ SqlSession ์ด ์›์‹œ์  db์—ฐ๊ฒฐ๋•Œ ์‚ฌ์šฉํ–ˆ๋˜ Connection , PreparedStatement ์™€ ๋น„์Šทํ•œ ์—ญํ• ์„ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์ดํ•ด๊ฐ€ ํŽธํ•˜๋‹ค.

3. DAO์—์„œ factory, sqlsession ์‚ฌ์šฉ

  • factory ์™€ sqlsession์„ ์ „์—ญ๋ณ€์ˆ˜๋กœ ์„ ์–ธํ•ด์ค€๋‹ค.

  • factory๋Š” ์ „์—ญ์—์„œ ๊ฐ’์„ ๋ฐ”๋กœ ํ• ๋‹นํ•ด์ค€๋‹ค.

  • sqlsession์€ ์ƒ์„ฑ์ž์— ํ• ๋‹นํ•ด์ค€๋‹ค ( DAO์ƒ์„ฑ์‹œ ๋กœ๋“œ๋˜๋„๋ก )

์ž factory์™€ sqlsession์ด ์ค€๋น„๋˜์—ˆ์œผ๋‹ˆ sqlsession์˜ ๋ฉ”์„œ๋“œ๋กœ ์ฟผ๋ฆฌ๋ฌธ์„ ๋‚ ๋ ค๋ณด๋„๋ก ํ•˜์ž.

4. ์ฟผ๋ฆฌ๋ฌธ์ž‘์„ฑ ํ•  xml ํŒŒ์ผ ์ƒ์„ฑ

์ด์ œ SqlSession์„ ์‚ฌ์šฉํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ์ง€๋งŒ DAO์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์ด์ „์— ํ•ด์•ผํ•  ๊ฒŒ ํ•˜๋‚˜ ๋‚จ์•˜๋‹ค.
์›์‹œ์  DB์—ฐ๊ฒฐ ๋•Œ๋Š” ์ฟผ๋ฆฌ๋ฌธ์„ String ๋ณ€์ˆ˜์— ๋‹ด์•„ ์‚ฌ์šฉํ–ˆ์—ˆ๋Š”๋ฐ, Mybatis๋Š” xmlํŒŒ์ผ์— ํƒœ๊ทธ์•ˆ์— ์ž‘์„ฑํ•ด์„œ ๋‚ ๋ ค์ค˜์•ผ ํ•œ๋‹ค.
  • ๊ฐ DTO๋งˆ๋‹ค ๋‚ ๋ฆด ์ฟผ๋ฆฌ๋ฌธ์„ ์ž‘์„ฑํ•  xmlํŒŒ์ผ์„ ํ•˜๋‚˜์”ฉ ์ƒ์„ฑํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

์œ„ ์‚ฌ์ง„์—์„œ ์„ค๋ช…ํ• ๊ฒŒ ์•„์ฃผ ๋งŽ์€๋ฐ 5๋ฒˆ๋ผ์ธ๋ถ€ํ„ฐ ์ฐจ๊ทผ์ฐจ๊ทผ ๋ณด๋„๋ก ํ•˜์ž.
๋จผ์ € ์ฟผ๋ฆฌ๋ฌธ๋“ค์ด mapper๋ผ๋Š” ํƒœ๊ทธ ์•ˆ์— ์ž‘์„ฑ๋˜์–ด ์žˆ๋Š”๋ฐ, ์•„๊นŒ 1๋ฒˆ ์„ค๋ช…์— ํ™˜๊ฒฝ์„ค์ • xml์—์„œ mappers ์•ˆ์— mapper ํƒœ๊ทธ๋กœ ์œ„ xml ํŒŒ์ผ ๊ฒฝ๋กœ๊ฐ€ ๋“ค์–ด๊ฐ€ ์žˆ์—ˆ๋‹ค.
์ฆ‰ , ํ™˜๊ฒฝ ์„ค์ • ๋•Œ ์œ„ ์ฟผ๋ฆฌ๋ฌธ ์ž‘์„ฑ ํŒŒ์ผ์„ ๋งคํ•‘ํ•ด์ฃผ์–ด์•ผ mabtis๊ฐ€ ์ฐพ์•„์„œ ์ฟผ๋ฆฌ๋ฌธ์„ ๋‚ ๋ ค์ฃผ๋Š” ๊ฒƒ์ด๋‹ค. ( config.xml์ด user.xml์„ ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ๋งคํ•‘ ํ•ด์ฃผ์—ˆ๋‹ค๋Š” ๋œป )
๋˜ํ•œ namespace="User" ๋ผ๋Š” ์†์„ฑ์ด ์žˆ๋Š”๋ฐ, ์ด๊ฑด DAO์—์„œ SqlSession ์˜ ๋ฉ”์„œ๋“œ๋กœ ์ฟผ๋ฆฌ๋ฌธ์„ ๋‚ ๋ ค์ค„ ๋•Œ ์–ด๋–ค ์ฟผ๋ฆฌxml์˜ ์–ด๋–ค ์ฟผ๋ฆฌ๋ฌธ์„ ๋‚ ๋ฆด์ง€ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ช…์‹œํ•ด ์ฃผ์–ด์•ผ ํ•˜๋Š”๋ฐ, ์ฒซ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ namespace์˜ ๊ฐ’์ด๊ณ , ๋‘๋ฒˆ์งธ ํŒŒ๋งˆ๋ฏธํ„ฐ๊ฐ€ ์•ˆ์˜ ์ฟผ๋ฆฌ๋ฌธ ํƒœ๊ทธ์˜ id ๊ฐ’์ด๋‹ค.
์ดํ•ด๊ฐ€ ์‰ฝ๋„๋ก DAO์˜ ๋ฉ”์„œ๋“œ์™€ ํ•จ๊ป˜ ๋ณด๋„๋ก ํ•˜์ž.

์œ„ ๋ฉ”์„œ๋“œ ๋“ค์„ ๋ณด๋ฉด sqlsession.selectOne("User.checkID", userid);์™€ sqlsession.insert("User.join", user);๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ด๊ฒŒ ๋ฐ”๋กœ ์ฟผ๋ฆฌ๋ฌธ์„ ๋‚ ๋ฆฌ๋Š” sqlsession์˜ ๋ฉ”์„œ๋“œ์ธ๋ฐ, ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์œ ์‹ฌํžˆ ๋ณด๋„๋ก ํ•˜์ž.
๊ฐ ๋ฉ”์„œ๋“œ์˜ ์ฒซ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ์—” User.checkID, User.join์ด ์žˆ๋Š”๊ฑธ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ User๋Š” ์œ„์˜ ์ฟผ๋ฆฌ๋ฌธxml ํŒŒ์ผ์˜ namespace ์†์„ฑ๊ฐ’์ธ User์™€ ๋งคํ•‘ํ•œ ๊ฒƒ์ด๊ณ , checkID , join์€ ๊ฐ๊ฐ ์ฟผ๋ฆฌ๋ฌธ ํƒœ๊ทธ์˜ id์™€ ๋งคํ•‘ํ•œ ๊ฒƒ์ด๋‹ค.
๋‹ค์‹œ ์œ„๋กœ ๋Œ์•„๊ฐ€์„œ ์ฟผ๋ฆฌ๋ฌธ ํƒœ๊ทธ์˜ ์†์„ฑ์„ ๋ณด๋ฉด parameterType , resultType์ด ์žˆ๋Š”๋ฐ ์—ฌ๊ธฐ์„œ parameterType์— sqlsession ๋ฉ”์„œ๋“œ์˜ ๋‘๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ์ž๋ฃŒํ˜•์„ ์ž‘์„ฑํ•ด ์ฃผ์–ด์•ผ ํ•˜๋ฉฐ, resultType์€ select๋ฌธ์„ ์‚ฌ์šฉํ•  ๋•Œ ๊ทธ์— ๋งž๋Š” ์ƒํ™ฉ์— ๋”ฐ๋ฅธ ๊ฒฐ๊ณผ๊ฐ’์˜ ์ž๋ฃŒํ˜•์„ ๋งž๊ฒŒ ๋„ฃ์–ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.
์œ„์—์„  ์ฒซ๋ฒˆ์งธ select ํƒœ๊ทธ์—์„œ select count(*)๋ฅผ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฒฐ๊ณผ ๊ฐ’์ด number ์ฆ‰ int ํƒ€์ž…์œผ๋กœ ๋‚˜์˜ค๊ฒŒ ๋ ๊ฒƒ์ด๋ฏ€๋กœ resultType="_int" ์ด๋ฉฐ DAO์—์„œ๋„ cnt ๋ผ๋Š” int ํƒ€์ž…์˜ ๋ณ€์ˆ˜๋กœ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›๋Š”๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
๋‘๋ฒˆ์งธ ์ฟผ๋ฆฌ๋ฌธ ํƒœ๊ทธ๋Š” insert์ด๋ฏ€๋กœ resultType์ด ์—†๊ธฐ๋•Œ๋ฌธ์— ๋ช…์‹œํ•ด์ฃผ์ง€ ์•Š์•˜๋‹ค. (Mybatis์—์„  insert๋“ฑ์˜ ์—…๋ฐ์ดํŠธ๋ฌธ์€ java DAO์— ์—…๋ฐ์ดํŠธ๋œ ์ˆ˜ ๋งŒํผ int๊ฐ’์œผ๋กœ ๋ฐ˜ํ™˜๋˜๋ฉฐ ์—…๋ฐ์ดํŠธ ๋˜์ง€ ์•Š์œผ๋ฉด 0์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.)
์„ธ๋ฒˆ์งธ ์ฟผ๋ฆฌ๋ฌธ ํƒœ๊ทธ๋Š” selectํƒœ๊ทธ์ด๋ฉฐ select * ๋กœ, Beanํ•˜๋‚˜๋ฅผ ๋ฐ›์œผ๋ฉฐ resultType์„ ๋ณด๋ฉด UserBean ์ฆ‰, DTO์˜ ๊ฒฝ๋กœ (ํŒจํ‚ค์ง€์ „์ฒด) ๋ฅผ ๋ช…์‹œํ•œ ๊ฑธ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
์ž ์ด์ œ parameterType , resultType ์˜ Mapped Type๊ณผ Alias๋ฅผ ๋ณด๋„๋ก ํ•˜์ž.
Mapped Type : ์ž๋ฐ”์—์„œ์˜ ์ž๋ฃŒํ˜•
Alias : ์ž๋ฐ”์—์„œ์˜ ์ž๋ฃŒํ˜•๊ณผ ๋งคํ•‘๋  ์ฟผ๋ฆฌ๋ฌธ ํƒœ๊ทธ ์†์„ฑ๊ฐ’
(์•„๋ž˜ ์‚ฌ์ง„์€ mybatis ์„ค๋ช…์„œ ์ฆ‰, pdfํŒŒ์ผ 20ํŽ˜์ด์ง€์— ๋ช…์‹œ๋˜์–ด ์žˆ๋‹ค.)


Mybatis FrameWork๋Š” ์—ฌ๊ธฐ๊นŒ์ง€ ์ด๋ฉฐ ๋‚˜๋จธ์ง€ ์ž‘์—…์€ ์ด์ „๊ณผ ๋™์ผํ•˜๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€