
JPA(Java Persistence API)๋ ์๋ฐ ์ ํ๋ฆฌ์ผ์ด์
์์
๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๊ฒ ํด์ฃผ๋ ORM(Object-Relational Mapping) ํ์ค ๊ธฐ์
JPA
โข
JPA
โข
JPA ์ฃผ์ ๊ตฌ์ฑ ์์
โข
JPA ์ฅ์
โข
JPA vs MyBatis
JPA ์๊ฐ
ORM(Object-Relational Mapping)
โ
๊ฐ์ฒด์ ํ
์ด๋ธ์ 1:1๋ก ๋งคํํ์ฌ SQL์ ์ง์ ์ฌ์ฉํ์ง ์๊ณ ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์กฐ์ํ ์ ์๋๋ก ๋์์ฃผ๋ ๊ธฐ์ ์
๋๋ค.
โข
Persistence Framework
ORM
์ํฐํฐ(Entity)
โ
@Entity ์ด๋
ธํ
์ด์
์ ์ฌ์ฉํ์ฌ ์ ์๋ฉ๋๋ค.
โ
๊ฐ ์ํฐํฐ๋ ๊ณ ์ ํ ์๋ณ์(@Id)๋ฅผ ๊ฐ์ง๋ฉฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ
์ด๋ธ์ ๋ ์ฝ๋๋ฅผ ์๋ฐ ๊ฐ์ฒด๋ก ํํํฉ๋๋ค.
์ํฐํฐ
๐ ๊ด๊ณ ๋งคํ
1๏ธโฃ JPA ๊ด๊ณ ๋งคํ ๊ฐ๋
JPA์์ ์ํฐํฐ ๊ฐ์ ๊ด๊ณ๋ฅผ ์ค์ ํ ๋ ์ฐ๊ด ๊ด๊ณ ๋งคํ์ ์ฌ์ฉํฉ๋๋ค. ๊ด๊ณ๋ ๋ค์๊ณผ ๊ฐ์ด ๋ถ๋ฅ๋ฉ๋๋ค.
โข
1๏ธโฃ 1:1 (One-To-One) โ @OneToOne
๊ด๊ณ ๋งคํ
๐ JPA ์ฃผ์ ์ด๋ ธํ ์ด์
JPA์์ ์์ฃผ ์ฌ์ฉ๋๋ ์ด๋
ธํ
์ด์
์ ๊ธฐ๋ณธ ์ํฐํฐ, ๊ด๊ณ ๋งคํ, ๊ธฐํ ๊ธฐ๋ฅ์ผ๋ก ๋ถ๋ฅํ์ฌ ์ ๋ฆฌํ์ต๋๋ค.
์ฃผ์ ์ด๋
ธํ
์ด์
๐ JPQL (Java Persistence Query Language)
JPQL
๐ Criteria API
โ
SQL์ด๋ JPQL๊ณผ ๋ฌ๋ฆฌ, ์๋ฐ ์ฝ๋๋ง์ผ๋ก ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๊ธฐ ๋๋ฌธ์ ์ปดํ์ผ ์์ ์์ ์ค๋ฅ๋ฅผ ์ก์ ์ ์์ผ๋ฉฐ, ๋ฉ์๋ ์ฒด์ด๋ ๋ฐฉ์์ผ๋ก ๋์ ์ฟผ๋ฆฌ๋ฅผ ์ฝ๊ฒ ์กฐ๋ฆฝํ ์ ์์ต๋๋ค.
Criteria API
๐ Querydsl
โ
๊ธฐ์กด JPQL๊ณผ Criteria API์ ๋ณต์กํ ์ฝ๋ ์์ฑ์ ๋จ์ํํ๋ฉด์๋ ๊ฐ๋
์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ๋์ฌ์ฃผ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
Querydsl
๊ฒ์ํ ํ๋ก์ ํธ
1.
์ค๋น์ฌํญ
2.
์์กด์ฑ
3.
๋ฐ์ดํฐ ์์ค
4.
ํ๋ก์ ํธ ์ค์
๊ฒ์ํ ํ๋ก์ ํธ




