week 7 jisoo - GANGNAM-JAVA/JAVA-STUDY GitHub Wiki
-
static
์ ์ฌ์ ์ ์ผ๋ก '์ ์ ์ธ, ๊ณ ์ ๋, ์์ง์ด์ง ์๋'์ ์๋ฏธ๋ฅผ ๊ฐ๋๋ค.jvm ๋ฉ๋ชจ๋ฆฌ์ ๊ณ ์ ๋จ
์ ๋ปํจ๊ณผ ๋์์ static์ ์ฌ์ฉํ๋ค๋ ์๋ฏธ๋๋ชจ๋ ๊ฐ์ฒด๊ฐ '๊ณต์ '
ํ๋ค๋ ์๋ฏธ๋ฅผ ๋ปํ๋ค. -
์ธ์คํด์ค ๋ณ์์ ๊ฐ์ด ์ธ์คํด์ค ๋ง๋ค ๋ค๋ฅธ ๊ฐ์ ๊ฐ์ง ์ ์๋ค๋ ์ ์ ํ๋์ ํด๋์ค๋ฅผ ์ฌ๋ฌ๊ฐ์ ์ธ์คํด์ค๋ก ๋ง๋ค์ด์ ์ฌ์ฉํ ์ ์๋ค๋ ์ ์์ ์ข์ ๊ธฐ๋ฅ์ด๋ผ๊ณ ํ ์ ์๋ค.
-
๊ทธ๋ฌ๋, ๋์ ๋ฐ๋ผ์ ๋ชจ๋ ์ธ์คํด์ค๊ฐ ๊ฐ์ ๊ฐ์ ๊ณต์ ํ๊ฒ ํ๊ณ ์ถ์ ๋๊ฐ ์๋ค. ์ด๋ฐ ๊ฒฝ์ฐ ํด๋น ๋ณ์๋ฅผ ํด๋์ค์ ๋ฉค๋ฒ๋ก ๋ง๋ค๋ฉด ๋๋ค. ์ธ์คํด์ค ๋ณ์์ ๋ง์ฐฌ๊ฐ์ง๋ก class ๋ด๋ถ์ ์์น ํ์ง๋ง,
static
ํค์๋๋ฅผ ๋ฉค๋ฒ ์์ ๋ถ์ด๋ฉด ํด๋์ค์ ๋ฉค๋ฒ๊ฐ ๋๋ค. ์ฆ, ํด๋น ํด๋์ค ์์์ ๋ณ์๊ฐ ๋๋ค. ๋ฌผ๋ก , ๋ฉ์๋๋ ๋ง์ฐฌ๊ฐ์ง์ด๋ค. -
static์ด ์คํ๋๋ ์์ ์ ํด๋์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ ์์ ์ฌ๋ผ๊ฐ ๋์ด๋ค. ์ฆ, ์ฐ๋ฆฌ๊ฐ ํ๋ก๊ทธ๋จ์ ์คํํ๋ฉด ํ์ํ ํด๋์ค๊ฐ jvm ๋ฉ๋ชจ๋ฆฌ์์ ๋ก๋ฉ๋๋ ๊ณผ์ ์ ๊ฑฐ์น๋ค. (JVM class-loader์ ์ญํ ) ๊ทธ๋ฆฌ๊ณ ํ๋ฒ ๋ก๋ฉ๋ ํด๋์ค๋ ํน๋ณํ ์ผ์ด ๋ฐ์ํ์ง ์๋ ์ด์ ๋ฉ๋ชจ๋ฆฌ ์์์ ๊ฐ์ฒด๋ฅผ ์์ฑํ ์ ์๋๋ก ๋ฉ๋ชจ๋ฆฌ์ ์์ฃผํ๋ค.
static
์ ์ด ์์ ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ๋ฉด์ ํ์ํ ๋์์ ์ฒ๋ฆฌํ๋ค. -
๊ฒฐ๋ก ์ ์ผ๋ก static์ ๊ฐ์ฒด์ ์์ฑ๊ณผ๋ ๊ด๊ณ์์ด ํด๋์ค๊ฐ ๋ก๋ฉ๋๋ ์์ ์ ๋จ ํ๋ฒ๋ง ํ์ํ ๋์์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค. ์ด ๋,
jvm์ Method ์์ญ(ํด๋์ค ์์ญ)
์ ํด๋์ค์ ์ ๋ณด๋ค์ด ์ฌ๋ผ๊ฐ๊ฒ ๋๋ค. -
์ดํด๋ฅผ ๋๊ธฐ์ํ JVM์ ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ์ ๋ฉ์๋ ์์ญ(ํด๋์ค ์์ญ)์ ๋ํ ๊ฐ๋ตํ ์ค๋ช ์ด๋ค.
-
๊ณต๊ฐ์ ํน์ฑ: ๋ฉค๋ฒ๋ ๊ฐ์ฒด๋ง๋ค ๋ณ๋๋ก ์กด์ฌํ๋ค.
-
์ธ์คํด์ค ๋ฉค๋ฒ
๋ผ๊ณ ๋ถ๋ฅธ๋ค.
-
-
์๊ฐ์ ํน์ฑ: ๊ฐ์ฒด ์์ฑ ์์ ๋ฉค๋ฒ๊ฐ ์์ฑ๋๋ค.
- ๊ฐ์ฒด๊ฐ ์๊ธธ ๋ ๋ฉค๋ฒ๋ ์์ฑ๋๋ค.
- ๊ฐ์ฒด ์์ฑ ํ ๋ฉค๋ฒ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
- ๊ฐ์ฒด๊ฐ ์ฌ๋ผ์ง๋ฉด ๋ฉค๋ฒ๋ ์ฌ๋ผ์ง๋ค.
-
๊ณต์ ์ ํน์ฑ: ๊ณต์ ๋์ง ์๋๋ค.
- ๋ฉค๋ฒ๋ ๊ฐ์ฒด ๋ด์ ๊ฐ๊ฐ์ ๊ณต๊ฐ์ ์ ์งํ๋ค.
-
๊ณต๊ฐ์ ํน์ฑ: ๋ฉค๋ฒ๋
ํด๋์ค๋น ํ๋
๊ฐ ์์ฑ๋๋ค.- ๋ฉค๋ฒ๋ ๊ฐ์ฒด ๋ด๋ถ๊ฐ ์๋
๋ณ๋์ ๊ณต๊ฐ
์ ์์ฑ๋๋ค. -
ํด๋์ค ๋ฉค๋ฒ
๋ผ๊ณ ๋ถ๋ฅธ๋ค.
- ๋ฉค๋ฒ๋ ๊ฐ์ฒด ๋ด๋ถ๊ฐ ์๋
-
์๊ฐ์ ํน์ฑ: ํด๋์ค ๋ก๋ฉ ์์ ๋ฉค๋ฒ๊ฐ ์์ฑ๋๋ค.
- ๊ฐ์ฒด๊ฐ ์๊ธฐ๊ธฐ ์ ์ ์ด๋ฏธ ์์ฑ๋๋ค.
- ๊ฐ์ฒด๊ฐ ์๊ธฐ๊ธฐ ์ ์๋ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค. (์ฆ, ๊ฐ์ฒด๋ฅผ ์์ฑํ์ง ์๊ณ ๋ ์ฌ์ฉํ ์ ์๋ค.)
- ๊ฐ์ฒด๊ฐ ์ฌ๋ผ์ ธ๋ ๋ฉค๋ฒ๋ ์ฌ๋ผ์ง์ง ์๋๋ค.
- ๋ฉค๋ฒ๋ ํ๋ก๊ทธ๋จ์ด ์ข ๋ฃ๋ ๋ ์ฌ๋ผ์ง๋ค.
์ถ์ฒ : https://gmlwjd9405.github.io/2018/08/04/java-static.html
์๋ฐ์๋ int, double, float
์ ๊ฐ์ **๊ธฐ๋ณธํ(primitive type)**์ ์๋ฃํ๊ณผ **ํฌ์ฅ ํด๋์ค(wrapper)**๊ฐ ์๋ค.
๋ฐ์ฑ๊ณผ ์ธ๋ฐ์ฑ์ ๋ํด์ ์๋ ค๋ฉด ์ผ๋จ Wrapper์ ๋ํด์ ์์์ผ ํ๋ค.
๊ธฐ๋ณธํ ๊ฐ์ฒด๋ฅผ Wrapper ๋ก ๋ฐ๊ฟ์ฃผ๋ ๊ฒ์ ๋ฐ์ฑ
์ด๋ผ๊ณ ํ๊ณ ๋ฐ๋๋ก Wrapper ํด๋์ค ํ์
์ ๊ฐ์ Primitive๋ก ๋ฐ๊พธ๋ ๊ฒ์ ์ธ๋ฐ์ฑ
์ด๋ผ๊ณ ํ๋ค.
๊ธฐ๋ณธ ์๋ฃํ์ ๊ฐ์ ๊ตณ์ด ๋ํผ(wrapper) ํด๋์ค๋ก ํฌ์ฅํ๋ ์ด์ ๋ ์ ๋ค๋ฆญ, ์๋ฃ๊ตฌ์กฐ, ๋งค๊ฐ๋ณ์ ๋ฑ ๊ธฐ๋ณธ ์๋ฃํ์ด ์๋ ๋ ํผ๋ฐ์ค ํ์ ์ ํ์๋ก ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๊ณ ๋ฉ์๋๋ฅผ ๊ฐ๊ณ ์์ด ๋ค์ํ๊ฒ ํ์ฉ์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ์ธ์คํด์ค๋ฅผ ์์ฑ(heap ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ) ํ์ฌ ์์ ๋ฐ ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค. ๋ํ ๋ฌธ์์ด(String)๊ณผ ๊ธฐ๋ณธ ์๋ฃํ ๊ฐ ํ ๋ณํํ์ฌ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
๋ํผ(wrapper) ํด๋์ค์ ๋์ ๋ ๊ฐ์ ==, != ๊ณผ ๊ฐ์ ์ฐ์ฐ์๋ฅผ ์ด์ฉํ์ฌ ๊ฐ์ ๋น๊ต๊ฐ ๋ถ๊ฐ๋ฅํ๋ค. ๊ทธ ์ด์ ๋ ์ธ์คํด์ค๋ฅผ ์์ฑํ๋ฉด์ heap ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ด ์ ์ฅ๋๊ณ ๊ฐ์ฒด ๋ณ์๋ ์ฐธ์กฐ ๊ฐ์ ๊ฐ๊ธฐ ๋๋ฌธ์ด๋ค.๋ฐ๋ผ์ equals() ๋ฉ์๋๋ฅผ ์ด์ฉํ๊ฑฐ๋ ๋ฐ์ดํฐ๋ฅผ ์ธ๋ฐ์ฑํ์ฌ ๊ฐ์ ๋น๊ตํด์ผ ํ๋ค.
- ์์์ฑ(Persistence)์ ๊ฐ๋ ์ ์ดํดํ๋ค.
- SQL Mapper์ ORM์ ์ฐจ์ด์ ๋ํด ์ดํดํ๋ค.
- JDBC(Data Transfer Object)๋ ๋ฌด์์ธ์ง ์ดํดํ๋ค.
- JPA/Hibernate๋ ๋ฌด์์ธ์ง ์ดํดํ๋ค.
- Mybatis๋ ๋ฌด์์ธ์ง ์ดํดํ๋ค.
- ๋ฐ์ดํฐ๋ฅผ ์์ฑํ ํ๋ก๊ทธ๋จ์ด ์ข ๋ฃ๋๋๋ผ๋ ์ฌ๋ผ์ง์ง ์๋ ๋ฐ์ดํฐ์ ํน์ฑ์ ๋งํ๋ค.
- ์์์ฑ์ ๊ฐ์ง ์๋ ๋ฐ์ดํฐ๋ ๋จ์ง ๋ฉ๋ชจ๋ฆฌ์์๋ง ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ํ๋ก๊ทธ๋จ์ ์ข ๋ฃํ๋ฉด ๋ชจ๋ ์์ด๋ฒ๋ฆฌ๊ฒ ๋๋ค. ๋๋ฌธ์ ํ์ผ ์์คํ , ๊ด๊ณํ ํ ์ดํฐ๋ฒ ์ด์ค ํน์ ๊ฐ์ฒด ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฑ์ ํ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์๊ตฌํ๊ฒ ์ ์ฅํ์ฌ ์์์ฑ ๋ถ์ฌํ๋ค.
-
Persistence Layer
- ํ๋ก๊ทธ๋จ์ ์ํคํ ์ฒ์์, ๋ฐ์ดํฐ์ ์์์ฑ์ ๋ถ์ฌํด์ฃผ๋ ๊ณ์ธต์ ๋งํ๋ค.
- JDBC๋ฅผ ์ด์ฉํ์ฌ ์ง์ ๊ตฌํํ ์ ์์ง๋ง Persistence framework๋ฅผ ์ด์ฉํ ๊ฐ๋ฐ์ด ๋ง์ด ์ด๋ฃจ์ด์ง๋ค.
-
๊ณ์ธต ์ฐธ๊ณ
- ํ๋ ์ ํ ์ด์ ๊ณ์ธต (Presentation layer) - UI ๊ณ์ธต (UI layer) ์ด๋ผ๊ณ ๋ ํจ
- ์ ํ๋ฆฌ์ผ์ด์ ๊ณ์ธต (Application layer) - ์๋น์ค ๊ณ์ธต (Service layer) ์ด๋ผ๊ณ ๋ ํจ
- ๋น์ฆ๋์ค ๋ ผ๋ฆฌ ๊ณ์ธต (Business logic layer) - ๋๋ฉ์ธ ๊ณ์ธต (Domain layer) ์ด๋ผ๊ณ ๋ ํจ
- ๋ฐ์ดํฐ ์ ๊ทผ ๊ณ์ธต (Data access layer) - ์์ ๊ณ์ธต (Persistence layer) ์ด๋ผ๊ณ ๋ ํจ
-
Persistence Framework
- JDBC ํ๋ก๊ทธ๋๋ฐ์ ๋ณต์กํจ์ด๋ ๋ฒ๊ฑฐ๋ก์ ์์ด ๊ฐ๋จํ ์์ ๋ง์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๋๋๋ ์์คํ ์ ๋น ๋ฅด๊ฒ ๊ฐ๋ฐํ ์ ์์ผ๋ฉฐ ์์ ์ ์ธ ๊ตฌ๋์ ๋ณด์ฅํ๋ค.
- Persistence Framework๋ SQL Mapper์ ORM์ผ๋ก ๋๋ ์ ์๋ค.
- Ex) JPA, Hibernate, Mybatis ๋ฑ
- ORM์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด๋ฅผ ์๋ฐ ๊ฐ์ฒด๋ก ๋งคํํจ์ผ๋ก์จ ๊ฐ์ฒด ๊ฐ์ ๊ด๊ณ๋ฅผ ๋ฐํ์ผ๋ก SQL์ ์๋์ผ๋ก ์์ฑํด์ฃผ์ง๋ง SQL Mapper๋
SQL์ ๋ช ์
ํด์ค์ผ ํ๋ค. - ORM์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ โ๊ด๊ณโ๋ฅผ
Object์ ๋ฐ์
ํ์๋ ๊ฒ์ด ๋ชฉ์ ์ด๋ผ๋ฉด, SQL Mapper๋ ๋จ์ํ ํ๋๋ฅผ ๋งคํ์ํค๋ ๊ฒ์ด ๋ชฉ์ ์ด๋ผ๋ ์ ์์ ์งํฅ์ ์ ์ฐจ์ด๊ฐ ์๋ค.
- SQL <โ๋งคํโ> Object ํ๋
- SQL Mapper๋ SQL ๋ฌธ์ฅ์ผ๋ก ์ง์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฌ๋ค.
- ์ฆ, SQL Mapper๋ SQL์ ๋ช ์ํด์ค์ผ ํ๋ค.
- Ex) Mybatis, JdbcTempletes ๋ฑ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐ์ดํฐ <โ๋งคํโ> Object ํ๋
- ๊ฐ์ฒด๋ฅผ ํตํด ๊ฐ์ ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฌ๋ค.
- ๊ฐ์ฒด์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๋ฅผ ์๋์ผ๋ก ๋งคํ(์ฐ๊ฒฐ)ํด์ฃผ๋ ๊ฒ์ ๋งํ๋ค.
- ORM์ ์ด์ฉํ๋ฉด SQL Query๊ฐ ์๋ ์ง๊ด์ ์ธ ์ฝ๋(๋ฉ์๋)๋ก ๋ฐ์ดํฐ๋ฅผ ์กฐ์ํ ์ ์๋ค.
- ๊ฐ์ฒด ๊ฐ์ ๊ด๊ณ๋ฅผ ๋ฐํ์ผ๋ก SQL์ ์๋์ผ๋ก ์์ฑํ๋ค.
-
Persistant API
๋ผ๊ณ ๋ ํ ์ ์๋ค. Ex) JPA, Hibernate ๋ฑ
- JDBC๋ DB์ ์ ๊ทผํ ์ ์๋๋ก Java์์ ์ ๊ณตํ๋ API์ด๋ค.
- ๋ชจ๋ Java์ Data Access ๊ธฐ์ ์ ๊ทผ๊ฐ
- ์ฆ, ๋ชจ๋ Persistence Framework๋ ๋ด๋ถ์ ์ผ๋ก
JDBC API
๋ฅผ ์ด์ฉํ๋ค. - JDBC๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์๋ฃ๋ฅผ ์ฟผ๋ฆฌํ๊ฑฐ๋ ์ ๋ฐ์ดํธํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ค.
- ์๋ฐ ORM ๊ธฐ์ ์ ๋ํ API ํ์ค ๋ช ์ธ๋ก, Java์์ ์ ๊ณตํ๋ API์ด๋ค.
- ์๋ฐ ํ๋ซํผ SE์ ์๋ฐ ํ๋ซํผ EE๋ฅผ ์ฌ์ฉํ๋ ์์ฉํ๋ก๊ทธ๋จ์์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ด๋ฆฌ๋ฅผ ํํํ๋ ์๋ฐ API์ด๋ค.
- ์ฆ, JPA๋ ORM์ ์ฌ์ฉํ๊ธฐ ์ํ ํ์ค ์ธํฐํ์ด์ค๋ฅผ ๋ชจ์๋ ๊ฒ์ด๋ค.
- ๊ธฐ์กด์ EJB์์ ์ ๊ณต๋๋ ์ํฐํฐ ๋น(Entity Bean)์ ๋์ฒดํ๋ ๊ธฐ์ ์ด๋ค.
- JPA ๊ตฌ์ฑ ์์ (์ธ ๊ฐ์ง)
-
javax.persistance
ํจํค์ง๋ก ์ ์๋ API ๊ทธ ์์ฒด - JPQL(Java Persistence Query Language)
- ๊ฐ์ฒด/๊ด๊ณ ๋ฉํ๋ฐ์ดํฐ
์ฌ์ฉ์๊ฐ ์ํ๋ JPA ๊ตฌํ์ฒด๋ฅผ ์ ํํด์ ์ฌ์ฉํ ์ ์๋ค.
JPA์ ๋ํ์ ์ธ ๊ตฌํ์ฒด๋ก๋ Hibernate, EclipseLink, DataNucleus, OpenJPA, TopLink Essentials ๋ฑ์ด ์๋ค.
์ด ๊ตฌํ์ฒด๋ค์
ORM Framework
๋ผ๊ณ ๋ถ๋ฅธ๋ค.
-
- Hibernate๋
JPA์ ๊ตฌํ์ฒด
์ค ํ๋์ด๋ค. - Hibernate๊ฐ SQL์ ์ง์ ์ฌ์ฉํ์ง ์๋๋ค๊ณ ํด์ JDBC API๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค๋ ๊ฒ์ ์๋๋ค.
Hibernate๊ฐ ์ง์ํ๋ ๋ฉ์๋ ๋ด๋ถ์์๋
JDBC API
๊ฐ ๋์ํ๊ณ ์์ผ๋ฉฐ, ๋จ์ง ๊ฐ๋ฐ์๊ฐ ์ง์ SQL์ ์ง์ ์์ฑํ์ง ์์ ๋ฟ์ด๋ค. - HQL(Hibernate Query Language)์ด๋ผ ๋ถ๋ฆฌ๋ ๋งค์ฐ ๊ฐ๋ ฅํ ์ฟผ๋ฆฌ ์ธ์ด๋ฅผ ํฌํจํ๊ณ ์๋ค.
- HQL์ SQL๊ณผ ๋งค์ฐ ๋น์ทํ๋ฉฐ ์ถ๊ฐ์ ์ธ ์ปจ๋ฒค์ ์ ์ ์ํ ์๋ ์๋ค.
- HQL์ ์์ ํ ๊ฐ์ฒด ์งํฅ์ ์ด๋ฉฐ ์ด๋ก์จ ์์, ๋คํ์ฑ, ๊ด๊ณ๋ฑ์ ๊ฐ์ฒด์งํฅ์ ๊ฐ์ ์ ๋๋ฆด ์ ์๋ค.
- HQL์ฟผ๋ฆฌ๋ ์๋ฐ ํด๋์ค์ ํ๋กํผํฐ์ ์ด๋ฆ์ ์ ์ธํ๊ณ ๋ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ๋ค.
- HQL์ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ก ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ฉฐ ํ๋ก๊ทธ๋๋จธ์ ์ํด ์์ฑ๋๊ณ ์ง์ ์ ์ผ๋ก ์ ๊ทผํ ์ ์๋ค.
- HQL์ SQL์์๋ ์ง์ํ์ง ์๋ ํ์ด์ง๋ค์ด์ ์ด๋ ๋์ ํ๋กํ์ผ๋ง๊ณผ ๊ฐ์ ํฅ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
- HQL์ ์ฌ๋ฌ ํ ์ด๋ธ์ ์์ ํ ๋ ๋ช ์์ ์ธ join์ ์๊ตฌํ์ง ์๋๋ค.
-
์ฅ์
- ๊ฐ์ฒด์งํฅ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ ์ ์๊ธฐ ๋๋ฌธ์ ๋น์ฆ๋์ค ๋ก์ง์ ์ง์ค ํ ์ ์์ผ๋ฉฐ, ๊ฐ์ฒด์งํฅ ๊ฐ๋ฐ์ด ๊ฐ๋ฅํ๋ค.
- ํ ์ด๋ธ ์์ฑ, ๋ณ๊ฒฝ, ๊ด๋ฆฌ๊ฐ ์ฝ๋ค. (JPA๋ฅผ ์ ์ดํดํ๊ณ ์๋ ๊ฒฝ์ฐ)
- ๋ก์ง์ ์ฟผ๋ฆฌ์ ์ง์คํ๊ธฐ ๋ณด๋ค๋ ๊ฐ์ฒด ์์ฒด์ ์ง์ค ํ ์ ์๋ค.
- ๋น ๋ฅธ ๊ฐ๋ฐ์ด ๊ฐ๋ฅํ๋ค.
-
๋จ์
- ์ด๋ ต๋ค. (๋ง์ ๋ด์ฉ์ด ๊ฐ์ธ์ ธ ์๊ธฐ ๋๋ฌธ์ ์์์ผ ํ ๊ฒ์ด ๋ง๋ค.)
- ์ ์ดํดํ๊ณ ์ฌ์ฉํ์ง ์์ผ๋ฉด ๋ฐ์ดํฐ ์์ค์ด ์์ ์ ์๋ค. (persistence context)
- ์ฑ๋ฅ์ ๋ฌธ์ ๊ฐ ์์ ์ ์๋ค. (์ด ๋ฌธ์ ๋ํ ์ ์ดํดํด์ผ ํด๊ฒฐ์ด ๊ฐ๋ฅํ๋ค.)
- ๊ฐ๋ฐ์๊ฐ ์ง์ ํ SQL, ์ ์ฅ ํ๋ก์์ ๊ทธ๋ฆฌ๊ณ ๋ช ๊ฐ์ง ๊ณ ๊ธ ๋งคํ์ ์ง์ํ๋
SQL Mapper
์ด๋ค. JDBC๋ก ์ฒ๋ฆฌํ๋ ์๋น ๋ถ๋ถ์ ์ฝ๋์ ํ๋ผ๋ฏธํฐ ์ค์ ๋ฐ ๊ฒฐ๊ณผ ๋งคํ์ ๋์ ํด์ค๋ค. - ๊ธฐ์กด์ JDBC๋ฅผ ์ฌ์ฉํ ๋๋ DB์ ๊ด๋ จ๋ ์ฌ๋ฌ ๋ณต์กํ ์ค์ (Connection)๋ค์ ๋ค๋ฃจ์ด์ผ ํ์ง๋ง SQL Mapper๋ ์๋ฐ ๊ฐ์ฒด๋ฅผ ์ค์ SQL๋ฌธ์ ์ฐ๊ฒฐํจ์ผ๋ก์จ, ๋น ๋ฅธ ๊ฐ๋ฐ๊ณผ ํธ๋ฆฌํ ํ ์คํธ ํ๊ฒฝ์ ์ ๊ณตํ๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค record์ ์์ ํ์ ๊ณผ Map ์ธํฐํ์ด์ค ๊ทธ๋ฆฌ๊ณ ์๋ฐ POJO๋ฅผ ์ค์ ํด์ ๋งคํํ๊ธฐ ์ํด xml๊ณผ Annotation์ ์ฌ์ฉํ ์ ์๋ค.
- MyBatis๋ ์๋ Apache Foundation์ iBatis์์ผ๋, ์์ฐ์ฑ, ๊ฐ๋ฐ ํ๋ก์ธ์ค, ์ปค๋ฎค๋ํฐ ๋ฑ์ ์ด์ ๋ก Google Code๋ก ์ด์ ๋๋ฉด์ ์ด๋ฆ์ด ๋ฐ๋์๋ค.
- iBatis์ ๋ฐ๋ ์ฐจ์ด์ ์ ์๋์ ๊ฐ๋ค. JDK 1.5, Annotation Dynatic SQL, XML Element
- ์ฅ์ SQL์ ๋ํ ๋ชจ๋ ์ปจํธ๋กค์ ํ๊ณ ์ ํ ๋ ๋งค์ฐ ์ ํฉํ๋ค. SQL ์ฟผ๋ฆฌ๋ค์ด ๋งค์ฐ ์ ์ต์ ํ๋์ด ์์ ๋์ ์ ์ฉํ๋ค.
- ๋จ์
- ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ ์ค๊ณ์ ๋ํ ๋ชจ๋ ์กฐ์์ ํ๊ณ ์ ํ ๋๋ ์ ํฉํ์ง ์๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ ์๋ก ์ ๊ตฌ์กฐํ๋๋๋ก ๋ง์ ์ค์ ์ด ๋ฐ๋์ด์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค.
- ์ถ์ฒ : https://gmlwjd9405.github.io/2018/12/25/difference-jdbc-jpa-mybatis.html