2022.02.28์ ๊ธฐ๋ก
โถ ํ๋ฃจ
=> ๊ณต๋ถ ๊ด๋ จ
1) ์คํ๋ง ๊ฐ๊ตฌ๋ฆฌ์ฑ CH3
2) MVC ๊ฐ์ฒด์งํฅ ๋ฆฌํฉํ ๋ง
3) ๊ธ์ผ ๊ฐ์ ๋ณต์ต
=> ํ์ด๋ ํ๋ก์ ํธ ๊ด๋ จ
1) UI ์ ๋ฌด ๋ถ๋ด ํ์
โถ ๋ฌธ์ ์ ๋ฆฌ
โถ ๊ฐ์ธ ๊ณต๋ถ
โถ ์์ ๋ด์ฉ
MyBatis
DB
⇒ DB ์ฌ๋ฌ ํ ์ด๋ธ Join ์ ์ค๋ณต ์ปฌ๋ผ๋ช ์ aliasname์ผ๋ก ๋ฐ๊ฟ์ค๋ค.
- ํ ์ด๋ธ ์กฐ์ธ ์ ๋์ผํ ์ปฌ๋ผ๋ช ์ ๊ฐ์ง ๊ฒฝ์ฐ ๋๋ฒ ์งธ ์ด์์ ์ปฌ๋ผ๋ช ์ ์๋์ผ๋ก ๋ณ๊ฒฝ
DTO
- ๊ฐ์ฒด ์ง๋ ฌํ ํด๋์ค : Serializable ์ธํฐํ์ด์ค๋ฅผ ์์๋ฐ์ ํด๋์ค
- ⇒ ๊ฐ์ฒด ๋จ์๋ก ์ ๋ ฅ ๋๋ ์ถ๋ ฅ์ ์ํ ํด๋์ค ์ ์ธ ๋ฐฉ๋ฒ
mapper.xml
resultMap ์๋ฆฌ๋จผํธ์ ํ์ ์๋ฆฌ๋จผํธ ์ ์ธ ์์
- constructor >> id >> result >> association >> collection >> discriminator
- ⇒ ์์๋ฅผ ์ ์งํค๋ฉด ์๋ฌ ๋จ์ด์ง
- association ์๋ฆฌ๋จผํธ๋ก ๋งคํ ์ค์ ์ ์์ํ ๊ฒฝ์ฐ ๋ด๋ถ์ ์ผ๋ก ๋ชจ๋ ๋งคํ์ selectOne() ๋ฉ์๋๋ก ๋จ์ผํ์ ๋ํ ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ์ ๊ณต๋ฐ์ ๋งคํ ์ฒ๋ฆฌ
⇒ ๋ฌธ์ ์ )
- resultMap ์๋ฆฌ๋จผํธ์์ association ์๋ฆฌ๋จผํธ๋ก ๋งคํ ์ค์ ์ ์์ํ ๊ฒฝ์ฐ์ Collection ์๋ฆฌ๋จผํธ๋ฅผ ์ ์ธํ๋ฉด ๋ค์ํ์ ๊ฒ์๊ฒฐ๊ณผ์ ๋ํ ๋งคํ ์ฒ๋ฆฌ ๋ถ๊ฐ๋ฅ (TooManyResultsException ๋ฐ์)
⇒ ํด๊ฒฐ๋ฒ )
- resultMap ์๋ฆฌ๋จผํธ๊ฐ association ์๋ฆฌ๋จผํธ๊ฐ ์๋ ๋ค๋ฅธ ์๋ฆฌ๋จผํธ๋ก ๋งคํ์ด ์์๋๋๋ก ์ค์
- resultMap ์๋ฆฌ๋จผํธ๋ฅผ ๊ตฌ๋ถํ๊ธฐ ์ํ ์๋ณ์๋ฅผ ์์ฑ๊ฐ์ผ๋ก ์ค์ ⇒ resultMap ์๋ฆฌ๋จผํธ์ ๋งคํ์ ๋ณด๋ฅผ ์์๋ฐ์ ์ฌ์ฉ (์ค๋ณต๋๋ ์๋ฆฌ๋จผํธ๋ฅผ ์ ๊ฑฐ)
- ๊ฒ์ํ์ ์ปฌ๋ผ๊ฐ์ ๋น๊ตํ์ฌ ๋ค๋ฅธ ๋งคํ์ ๋ณด๋ฅผ ์ ๊ณตํ๊ธฐ ์ํ ์์ ์๋ฆฌ๋จผํธ
- ⇒ ํ์ ์๋ฆฌ๋จผํธ : case ์๋ฆฌ๋จผํธ
- javaType ์์ฑ : ๋น๊ต ์ปฌ๋ผ๊ฐ์ ๋ํ Java ์๋ฃํ์ ์์ฑ๊ฐ์ผ๋ก ์ค์
- column ์์ฑ : ๋น๊ต ์ปฌ๋ผ๊ฐ์ด ์ ์ฅ๋ ์ปฌ๋ผ๋ช
์ ์์ฑ๊ฐ์ผ๋ก ์ค์
- case : ๊ฒ์ํ์ ์ปฌ๋ผ๊ฐ์ ๋น๊ตํ์ฌ ๊ฐ์ ๊ฒฝ์ฐ ๋งคํ์ ๋ณด๋ฅผ ์ ๊ณตํ๊ธฐ ์ํ ์๋ฆฌ๋จผํธ
- value ์์ฑ : ๊ฒ์ํ์ ์ปฌ๋ผ๊ฐ๊ณผ ๋น๊ตํ ๊ฐ์ ์์ฑ๊ฐ์ผ๋ก ์ค์
- resultMap ์์ฑ : resultMap ์๋ฆฌ๋จผํธ๋ฅผ ๊ตฌ๋ถํ๊ธฐ ์ํ ์๋ณ์๋ฅผ ์์ฑ๊ฐ์ผ๋ก ์ค์ ⇒ resultMap ์๋ฆฌ๋จผํธ์ ๋งคํ์ ๋ณด๋ฅผ ์ ๊ณต๋ฐ์ ์ฌ์ฉ
- ⇒ ์๋ ๋งคํ์ด ์๋๊ฒ ์ปฌ๋ผ๋ช ๊ณผ DTO ํ๋ ์ด๋ฆ์ ๋ฌ๋ฆฌํ๋ ๊ฒ์ด ์ข์
- extends ์์ฑ (resultMap ์๋ฆฌ๋จผํธ์ ์์ฑ)
⇒ ๊ณตํต์ ์ธ ๋งคํ์ ๋ณด๋ discriminator ์๋ฆฌ๋จผํธ๊ฐ ์๋ ๋ค๋ฅธ ์๋ฆฌ๋จผํธ๋ฅผ ์ด์ฉํ์ฌ ๋งคํ ์ฒ๋ฆฌ
⇒ ํฌํจ๊ณผ ์์์ ์ ์ ํ ์ด์ฉํ์ฌ ์ ์ง๋ณด์์ ์์ฐ์ฑ์ ๋ํ๋ผ!
cache
- SELECT ๋ช ๋ น์ ๊ฒ์๊ฒฐ๊ณผ๋ฅผ Cache ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ์ฌ ๋น ๋ฅธ ๊ฒ์๊ฒฐ๊ณผ๋ฅผ ์ ๊ณตํ๋ ์๋ฆฌ๋จผํธ
- ⇒ INSERT, UPDATE, DELETE ๋ช ๋ น์ด ์คํ๋๋ฉด Cache ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋ ๊ฒ์๊ฒฐ๊ณผ๋ ์๋ ์ด๊ธฐํ : AutoFlush
- ⇒ ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๋ ํด๋์ค๋ ๋ฐ๋์ ๊ฐ์ฒด ์ง๋ ฌํ ํด๋์ค๋ก ์ ์ธ
- ์์ ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋จ
SQL ๋ช ๋ น ์์ฑ์ ํ์ํ ๊ฐ์ ์ ๋ฌ๋ฐ๋ ๋ฐฉ๋ฒ
- ⇒ ์ ๋ฌ๊ฐ์ SQL ๋ช ๋ น์์ #{๋ณ์๋ช |ํ๋๋ช |๋งตํค} ํ์์ผ๋ก ํํ
1. XML ๋งตํผ์์ SQL ๋ช ๋ น์ด ๋ฑ๋ก๋ ์๋ฆฌ๋จผํธ์ parameterType ์์ฑ๊ฐ์ผ๋ก Java ์๋ฃํ(๋ณ์นญ)์ ์ค์ ํ์ฌ ๊ฐ์ ์ ๋ฌ ๋ฐ์ ์ฌ์ฉ
⇒ parameterType ์์ฑ๊ฐ์ผ๋ก ๊ธฐ๋ณธํ(Wrapper) ๋๋ String ํด๋์ค ์ค์ - ๋จ์ผ ๊ฐ(๋ณ์๋ช )
⇒⇒ Interface ๋งตํผ์ ๋ฐ์ธ๋ฉ๋ ๊ฒฝ์ฐ ์ ๋ฌ๊ฐ์ ์๊ด์์ด parameterType ์์ฑ ์๋ต ๊ฐ๋ฅ
⇒ parameterType ์์ฑ๊ฐ์ผ๋ก DTO ํด๋์ค ์ค์ - ๋ค์๊ฐ (ํ๋๋ช )
⇒ parameterType ์์ฑ๊ฐ์ผ๋ก HashMap ํด๋์ค(Map ์ธํฐํ์ด์ค) ์ค์ - ๋ค์ ๊ฐ (ํ๋๋ช )
2. Interface ๋งตํผ์์ ์ถ์๋ฉ์๋์ ๋งค๊ฐ๋ณ์์ @Param ์ด๋ ธํ ์ด์ ์ ์ค์ ํ์ฌ ๋งค๊ฐ๋ณ์๋ก ๊ฐ์ ์ ๋ฌ๋ฐ์ XML ๋งตํผ์ ์๋ฆฌ๋จผํธ์ ๋ฑ๋ก๋ SQL ๋ช ๋ น์์ ์ ๋ฌ๊ฐ์ ์ฌ์ฉ
⇒ XML ๋งตํผ์ SQL ๋ช ๋ น์ด ๋ฑ๋ก๋ ์๋ฆฌ๋จผํธ์์๋ parameterType ์์ฑ ์๋ต
ํ๋์ ๊ฐ์ ์ ๋ฌ๋ฐ์ SQL ๋ช ๋ น์์ ์ฌ์ฉํ ๊ฒฝ์ฐ parameterType ์์ฑ๊ฐ์ผ๋ก ๊ธฐ๋ณธํ(Wrapper) ๋๋ String ํด๋์ค๋ฅผ ์ค์ ํ๊ณ SQL ๋ช ๋ น์์๋ ์ ๋ฌ๊ฐ์ #{๋ณ์๋ช } ํ์์ผ๋ก ํํ
- ๋ณ์๋ช ์ ์๋ณ์ ๊ท์น์๋ง ๋ง๊ฒ ์์ฑ
๋ค์์ ๊ฐ๋ง ์ ๋ฌ๋ฐ์ SQL ๋ช ๋ น์์ ์ฌ์ฉํ ๊ฒฝ์ฐ parameterType ์์ฑ๊ฐ์ผ๋ก DTOํด๋์ค๋ฅผ ์ค์ ํ๊ณ SQL ๋ช ๋ น์์๋ ์ ๋ฌ๊ฐ์ #{ํ๋๋ช } ํ์์ผ๋ก ํํ
- DTO ์ธ์คํด์ค์ ํ๋๊ฐ์ ์ ๊ณต๋ฐ์ ์ฌ์ฉ
๋ค์์ ๊ฐ๋ง ์ ๋ฌ๋ฐ์ SQL ๋ช ๋ น์์ ์ฌ์ฉํ ๊ฒฝ์ฐ parameterType ์์ฑ๊ฐ์ผ๋ก HashMapํด๋์ค(Map ์ธํฐํ์ด์ค)๋ก ์ค์ ํ๊ณ SQL ๋ช ๋ น์์๋ ์ ๋ฌ๊ฐ์ #{๋งตํค} ํ์์ผ๋ก ํํ
- Map ์ธ์คํด์ค์ ๋งต๊ฐ์ ์ ๊ณต๋ฐ์ ์ฌ์ฉ (DTO ๋ง๋ค์ง ์๋ ๋์ Map์ ์ฌ์ฉํจ)
- select ๋ฟ๋ง ์๋๋ผ Insert ์๋ ์ฌ์ฉ ๊ฐ๋ฅํจ.
select ์๋ฆฌ๋จผํธ์ resultType ์์ฑ๊ฐ์ HashMap ํด๋์ค(Map ์ธํฐํ์ด์ค)๋ก ์ค์ ํ๋ฉด ๊ฒ์ํ์ ์ปฌ๋ผ๋ช ์ ๋งตํค๋ก ์ปฌ๋ผ๊ฐ์ ๋งต ๊ฐ์ผ๋ก ๋งคํํ์ฌ ์ํธ๋ฆฌ๋ก ์ ์ฅํ์ฌ ๊ฒ์๊ฒฐ๊ณผ ์ ๊ณต
⇒ ๊ฒ์ํ์ ์ปฌ๋ผ๋ช ์ ๋๋ฌธ์๋ก ๊ฒ์๋๋ฏ๋ก ๋งตํค๋ฅผ ํํํ ๊ฒฝ์ฐ ๋๋ฌธ์๋ก ํํ
Interface ๋งตํผ์ ์ถ์๋ฉ์๋ ๋งค๊ฐ๋ณ์์ ์ ๋ฌ๋ ๊ฐ์ @Param ์ด๋ ธํ ์ด์ ์ value ์์ฑ๊ฐ์ #{์์ฑ๊ฐ}์ผ๋ก ํํ
⇒ parameterType ์์ฑ ์๋ต
⇒ @Param : ์ถ์ ๋ฉ์๋์ ๋งค๊ฐ๋ณ์์ ์ ์ฅ๋ ๊ฐ์ XML ๋งตํผ์ ์๋ฆฌ๋จผํธ์ ๋ฑ๋ก๋ SQL ๋ช ๋ น์์ ์ฌ์ฉํ ์ ์๋๋ก ์ ๊ณตํ๋ ์ด๋ ธํ ์ด์
⇒ value ์์ฑ : SQL ๋ช ๋ น์์ ๋งค๊ฐ๋ณ์์ ์ ์ฅ๋ ๊ฐ์ ์ฌ์ฉํ๊ธฐ ์ํ ์๋ณ์๋ฅผ ์์ฑ๊ฐ์ผ๋ก ์ค์
⇒ ์ด๋ ธํ ์ด์ ์ ๋ค๋ฅธ ์์ฑ์ด ์๋ ๊ฒฝ์ฐ ์์ฑ๊ฐ๋ง ์ค์ ๊ฐ๋ฅ
#{๋ณ์๋ช |ํ๋๋ช |๋งตํค} : ‘์ ๋ฌ๊ฐ’
- ์ ๋ฌ๊ฐ์ด SQL ๋ช ๋ น์์ ๋ฌธ์๊ฐ์ผ๋ก ํํ ๋จ(์ปฌ๋ผ๋ช ์ด ์๋ ๊ฐ์ผ๋ก ํํ๋๋๊ฒ์ด๋ค.)
${๋ณ์๋ช |ํ๋๋ช |๋งตํค} : ์ ๋ฌ๊ฐ
- ์ ๋ฌ๊ฐ์ SQL ๋ฌธ์ฅ(ํค์๋ ๋๋ ์๋ณ์)์ผ๋ก ํํ
⇒ ibatis์์๋ $๋ณ์๋ช |ํ๋๋ช |๋งตํค$ ํ์์ผ๋ก ํํ
⇒ $ํํ์์ InSQL ๊ณต๊ฒฉ์ ์ทจ์ฝํ๋ฏ๋ก ์ฌ์ฉํ๋ ๊ฒ์ ๋น๊ถ์ฅ (์ปฌ๋ผ๋ช ํํํ ๋๋ง ์ ๊น ์ฐ์)
bind (select ์๋ฆฌ๋จผํธ ํ์ ์๋ฆฌ๋จผํธ)
- SQL ๋ช ๋ น์์ ์ฌ์ฉํ ์ ์๋ ์ด๋ฆ๊ณผ ๊ฐ์ ์ค์ ํ๊ธฐ ์ํ ์๋ฆฌ๋จผํธ - ์ ๋ฌ๊ฐ ๋ณ๊ฒฝ
- name ์์ฑ : SQL ๋ช ๋ น์์ ์ฌ์ฉํ ๊ฐ์ ๊ตฌ๋ถํ๊ธฐ ์ํ ์๋ณ์๋ฅผ ์์ฑ๊ฐ์ผ๋ก ์ค์
- value ์์ฑ : SQL ๋ช ๋ น์์ ์ฌ์ฉํ ๊ฐ์ ์์ฑ๊ฐ์ผ๋ก ์ค์
- ⇒ value ์์ฑ๊ฐ์ผ๋ก ์ ๋ฌ๊ฐ์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ๋ฌธ์๊ฐ ๊ฒฐํฉ ๊ฐ๋ฅ( + ์ฐ์ฐ์) ์ ๊ณต
์ ์ผ ์ค์ํ ๊ฒ์ resultMap & ๋์ SQL
๋จ์ผ ๊ฐ & ๋ค์ ๊ฐ ์ ๋ฌ
โถ ํ์ด๋ ํ๋ก์ ํธ
> UI ๋ถ๋ด ํ์ ์์ PPT ์์
> ๋ด์ผ ํ์ ์์ธ ์ผ์ ๊ณํ ์๋ฆฝ