** ๐๋ง์ด๋ฐํฐ์ค(MyBatis) ์์ ์ค์ตํ ํ์ต ๋ชฉ์ฐจ (ํ์ผ ๊ธฐ๋ฐ) **
โ 0๋จ๊ณ: ์ค์ต ํ๊ฒฝ ์ค๋น
๋จ๊ณ | ํ์ต ํญ๋ชฉ | ์ค๋ช |
---|---|---|
0.1 | ๊ฐ๋ฐ ๋๊ตฌ ์ค์น | Eclipse, JDK, Apache Tomcat, MariaDB ์ค์น |
0.2 | ๋ง์ด๋ฐํฐ์ค ํ๋ก์ ํธ ๊ตฌ์กฐ ๋ถ์ | ์
๋ก๋ํ mybatisstudy.zip ๊ตฌ์กฐ ๋ถ์ ๋ฐ ์ธํ
|
0.3 | JDBC ์ฐ๋ ํ์ธ | test JDBC โ DB ์ฐ๊ฒฐ ํ์ธ ์ค์ต |
0.4 | lib ๋๋ ํ ๋ฆฌ ๊ตฌ์ฑ |
MyBatis + JDBC + Log4J JAR ์ถ๊ฐ ๋ฐ Build Path ๋ฑ๋ก |
๐ 1๋จ๊ณ: MyBatis ๊ธฐ์ด ์ตํ๊ธฐ
๋จ๊ณ | ํ์ต ํญ๋ชฉ | ์ค์ต ์์ |
---|---|---|
1.1 | MyBatis๋? & ๋์ ํ๋ฆ | XML ๊ธฐ๋ฐ ORM ๊ตฌ์กฐ ์ค๋ช
+ StudentMapper1.xml ์์ ๋ถ์ |
1.2 | SqlSessionFactoryBuilder ์ดํด | Resources.getResourceAsReader() โ ์ธ์
์์ฑ ํ๋ฆ ์ค์ต |
1.3 | selectOne / selectList ์ฌ์ฉ๋ฒ | ํ์ ์ , ์ ์ฒด ํ์ ์กฐํ , 1ํ๋
ํ์ ์กฐํ ์ค์ต |
1.4 | ๋งคํผ ํ์ผ ๊ตฌ์ฑ | StudentMapper1.xml ์ ๊ตฌ์กฐ (namespace, resultType, parameterType ๋ฑ) |
1.5 | resultMap vs resultType ๋น๊ต | ๊ฐ์ฒด ์๋ ๋งคํ vs ์๋ ์ค์ ์ค์ต ๋น๊ต |
๐ 2๋จ๊ณ: ํ๋ผ๋ฏธํฐ ๋งคํ ๊ณ ๊ธ ์ดํด
๋จ๊ณ | ํ์ต ํญ๋ชฉ | ์ค์ต ์์ |
---|---|---|
2.1 | parameterType์ ์๋ ์๋ฆฌ | ๋จ์ผ ๊ฐ vs Map vs ๊ฐ์ฒด ์ ๋ฌ ์ค์ต |
2.2 | SQL ์กฐ๊ฑด์ ๊ณผ ๋งคํ | ์ฑ์ด โ๊นโ์จ์ธ ํ์, ์ฃผ๋ฏผ๋ฒํธ โ ์ฌํ์ ํ๋ณ |
2.3 | MyBatis SQL ๋ก๊น | log4j.properties ์ค์ ์ผ๋ก ์ฟผ๋ฆฌ ์ถ๋ ฅ ์ค์ต |
2.4 | ๋ง์ด๋ฐํฐ์ค #{} vs ${} ์ฐจ์ด | SQL Injection ๋ฐฉ์ง ์ค์ต ํฌํจ |
๐ 3๋จ๊ณ: INSERT / UPDATE / DELETE ์ค์ต
๋จ๊ณ | ํ์ต ํญ๋ชฉ | ์ค์ต ์์ |
---|---|---|
3.1 | INSERT ๊ตฌ๋ฌธ ์์ฑ | ํ์ ๋ฑ๋ก ๊ธฐ๋ฅ ์ค์ต |
3.2 | UPDATE ๊ตฌ๋ฌธ | ํ๋ ์์ , ์ ํ๋ฒํธ ์์ |
3.3 | DELETE ๊ตฌ๋ฌธ | ํน์ ID ํ์ ์ญ์ |
3.4 | ํธ๋์ญ์ ์ฒ๋ฆฌ | commit , rollback ๊ฐ๋
์ค์ต |
๐ 4๋จ๊ณ: ๋์ SQL ์ฌํ
๋จ๊ณ | ํ์ต ํญ๋ชฉ | ์ค์ต ์์ |
---|---|---|
4.1 | if, choose, where, trim | ์กฐ๊ฑด๋ณ ์กฐํ (์ฑ , ํ๋
, ์ ํ๋ฒํธ ๋ฑ ์กฐํฉ) |
4.2 | foreach ์ฌ์ฉ | ๋ค์ค ํ๋ฒ ์กฐํ (๋ฐฐ์ด/๋ฆฌ์คํธ๋ก ์ ๋ฌ) |
4.3 | ๋์ INSERT | ๋น๊ฐ ์ ์ธ INSERT |
4.4 | SQL ์ฌ์ฌ์ฉ - include | ๊ณตํต WHERE์ /SELECT์ ์ฌ์ฌ์ฉ |
๐ 5๋จ๊ณ: DAO ๊ตฌ์กฐ ์ค๊ณ ๋ฐ ๋ถ๋ฆฌ
๋จ๊ณ | ํ์ต ํญ๋ชฉ | ์ค์ต ์์ |
---|---|---|
5.1 | DAO ํด๋์ค ์ค๊ณ | StudentDao ๋ถ๋ฆฌ ๊ตฌ์กฐ๋ก ๋ณ๊ฒฝ |
5.2 | DTO ํด๋์ค ์ค๊ณ | Student.java ํ๋ ๊ตฌ์กฐ ์ ๋ฆฌ |
5.3 | DAO + DTO + Mapper ์์ ๋ถ๋ฆฌ ์ค์ต | ์ ์ง๋ณด์์ฑ๊ณผ ํ์ฅ์ฑ ๊ณ ๋ ค ์ค๊ณ ์ค์ต |
๐ 6๋จ๊ณ: ์ธํฐํ์ด์ค ๊ธฐ๋ฐ ๋งคํผ ๊ตฌ์กฐ
๋จ๊ณ | ํ์ต ํญ๋ชฉ | ์ค์ต ์์ |
---|---|---|
6.1 | ์ธํฐํ์ด์ค ๊ธฐ๋ฐ ๋งคํผ ๊ตฌ์กฐ๋? | StudentMapper.java + StudentMapper.xml ์ฐ๊ฒฐ ์ค์ต |
6.2 | MyBatis Config ์ค์ ํ์ฅ | <mappers> ํ๊ทธ ์ค์ ๋ฒ |
6.3 | ์๋ ๋งคํผ ์ค์บ (@Mapper ) |
Annotation ํ์ฉ ๋ฐฉ์๋ ๋น๊ต ์๊ฐ (๊ธฐ์ด๋ง) |
๐ 7๋จ๊ณ: ์์ธ ์ฒ๋ฆฌ ๋ฐ ๊ณ ๊ธ ์๋ฌ ๋๋ฒ๊น
๋จ๊ณ | ํ์ต ํญ๋ชฉ | ์ค์ต ์์ |
---|---|---|
7.1 | try-catch, finally ๊ตฌ์กฐ | DB ์ฐ๊ฒฐ ์คํจ, ์ฟผ๋ฆฌ ์คํจ ์ฒ๋ฆฌ ์ค์ต |
7.2 | SQL ์์ธ ๋ฉ์์ง ๋ถ์๋ฒ | ์ค๋ฅ ๋ก๊ทธ ๋ถ์ ์ค์ |
7.3 | NullPointerException ๋ฐฉ์ง ํจํด | select ๊ฒฐ๊ณผ null ๋์ ์ค์ต |
7.4 | XML ๋งคํผ ๋ฌธ๋ฒ ์ค๋ฅ ๋๋ฒ๊น | common error checklist ์ ๋ฆฌ ์ ๊ณต |
๐ 8๋จ๊ณ: ์ค์ ํ๋ก์ ํธ ๊ตฌ์กฐ ์ค๊ณ
๋จ๊ณ | ๊ตฌ์ฑ ์์ | ์ค๋ช |
---|---|---|
8.1 | ๋๋ฉ์ธ ์์ ์ ์ | ํ์๊ด๋ฆฌ, ๊ฒ์ํ, ๋ก๊ทธ์ธ ์์คํ ์ค 1๊ฐ ์ ํ |
8.2 | ์๊ตฌ์ฌํญ ๋์ถ | ๊ธฐ๋ฅ ์ ๋ฆฌ, ์ ๋ ฅ/์ถ๋ ฅ ์ ์, DB ์ค๊ณ |
8.3 | Controller โ Service โ DAO โ MyBatis ํ๋ฆ ์ค๊ณ | MVC ๊ตฌ์กฐ + Mapper ์ฐ๋ ์ค์ต |
8.4 | JSP + JSTL ์ฐ๋ | View ์ถ๋ ฅ ๋ฐ ์ ๋ ฅํผ ์ฒ๋ฆฌ๊น์ง ์ฐ๊ณ |
8.5 | ํ๋ก์ ํธ ๋ฐฐํฌ | WAR ํ์ผ ์์ฑ โ Tomcat ๋ฐฐํฌ ํ ์คํธ |
๐ 9๋จ๊ณ: ๊ธฐ์ ๋ฉด์ & ์ต์ข ์ ๋ฆฌ
ํญ๋ชฉ | ๋ด์ฉ |
---|---|
๐ ๋ฉด์ ์์ ์ง๋ฌธ 20์ | resultType vs resultMap ์ฐจ์ด, MyBatis vs JPA ๋น๊ต ๋ฑ |
๐ก ์ค์ ํ 20 | ์์ฃผ ๋ฐ์ํ๋ ์ค์ ์ ๋ฆฌ, DAO/DTO ๊ตฌ์กฐ ์ค๊ณ ์ ๋ต |
โ ์ ๊ฒ ์ฒดํฌ๋ฆฌ์คํธ | ์ค์ต ์๋ฃ ์ ๊ฒํ, SQL ์์ธ ๋์ ์ ๋ต |