ALOHA CLASS
/
Back-End
/
JPA
Search
Share
JPA
JPA(Java Persistence API)๋ ์๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๊ฒ ํด์ฃผ๋ ORM(Object-Relational Mapping) ํ์ค ๊ธฐ์
ALCL_JPA.git
ALOHA-CLASS
JPA
JPA
โข
JPA
โข
JPA ์ฃผ์ ๊ตฌ์ฑ ์์
โข
JPA ์ฅ์
โข
JPA vs MyBatis
โข
JPA ์ฃผ์ ๊ธฐ๋ฅ
JPA๋?
JPA(Java Persistence API)๋ ์๋ฐ ์ง์์ ORM ๊ธฐ์ ํ์ค์ ๋๋ค. JPA๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ๋ฐ์๊ฐ ์ง์ SQL์ ์์ฑํ์ง ์๊ณ ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ฐ์ฒด์งํฅ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
JPA ์๊ฐ
ORM(Object-Relational Mapping)
๊ฐ์ฒด์ ํ ์ด๋ธ์ 1:1๋ก ๋งคํํ์ฌ SQL์ ์ง์ ์ฌ์ฉํ์ง ์๊ณ ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์กฐ์ํ ์ ์๋๋ก ๋์์ฃผ๋ ๊ธฐ์ ์ ๋๋ค.
โข
Persistence Framework
โข
ORM vs SQL Mapper
Persistence Framework
โข
ORM
ORM
์ํฐํฐ(Entity)
@Entity ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํ์ฌ ์ ์๋ฉ๋๋ค.
๊ฐ ์ํฐํฐ๋ ๊ณ ์ ํ ์๋ณ์(@Id)๋ฅผ ๊ฐ์ง๋ฉฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ์ ๋ ์ฝ๋๋ฅผ ์๋ฐ ๊ฐ์ฒด๋ก ํํํฉ๋๋ค.
โข
์ฃผ์ ์ด๋ ธํ ์ด์
โข
์ํฐํฐ ์์ ์ฝ๋
์ฃผ์ ์ด๋ ธํ ์ด์
์ํฐํฐ
๊ด๊ณ ๋งคํ
JPA ๊ด๊ณ ๋งคํ ๊ฐ๋
JPA์์ ์ํฐํฐ ๊ฐ์ ๊ด๊ณ๋ฅผ ์ค์ ํ ๋
์ฐ๊ด ๊ด๊ณ ๋งคํ
์ ์ฌ์ฉํฉ๋๋ค. ๊ด๊ณ๋ ๋ค์๊ณผ ๊ฐ์ด ๋ถ๋ฅ๋ฉ๋๋ค.
โข
1:1 (One-To-One)
โ
@OneToOne
โข
1:N (One-To-Many)
โ
@OneToMany
โข
N:1 (Many-To-One)
โ
@ManyToOne
โข
N:M (Many-To-Many)
โ
@ManyToMany
์ด ์ค
1:N & N:1
๊ด๊ณ๋ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ฉฐ, ์ค๋ฌด์์๋
์ค๊ฐ ํ ์ด๋ธ์ ์ด์ฉํ Many-To-Many ํด๊ฒฐ ๋ฐฉ๋ฒ
์ด ์ผ๋ฐ์ ์ ๋๋ค.
๊ด๊ณ ๋งคํ
JPA ์ฃผ์ ์ด๋ ธํ ์ด์
JPA์์ ์์ฃผ ์ฌ์ฉ๋๋ ์ด๋ ธํ ์ด์ ์
๊ธฐ๋ณธ ์ํฐํฐ, ๊ด๊ณ ๋งคํ, ๊ธฐํ ๊ธฐ๋ฅ
์ผ๋ก ๋ถ๋ฅํ์ฌ ์ ๋ฆฌํ์ต๋๋ค.
์ํฐํฐ ๊ธฐ๋ณธ ์ด๋ ธํ ์ด์
๊ด๊ณ ๋งคํ ์ด๋ ธํ ์ด์
๊ธฐํ ์ฃผ์ ์ด๋ ธํ ์ด์
์ฃผ์ ์ด๋ ธํ ์ด์
JPQL (Java Persistence Query Language)
JPQL ์ ์
ํน์ง
โข
SQL๊ณผ ์ ์ฌํ ๋ฌธ๋ฒ์ ์ฌ์ฉํ์ง๋ง
ํ ์ด๋ธ์ด ์๋ ์ํฐํฐ ๊ฐ์ฒด๋ฅผ ๋์์ผ๋ก ์คํ
โข
๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ ๋ฆฝ์
์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅ
JPQL
Criteria API
SQL์ด๋ JPQL๊ณผ ๋ฌ๋ฆฌ,
์๋ฐ ์ฝ๋๋ง์ผ๋ก ์ฟผ๋ฆฌ๋ฅผ ์์ฑ
ํ๊ธฐ ๋๋ฌธ์ ์ปดํ์ผ ์์ ์์ ์ค๋ฅ๋ฅผ ์ก์ ์ ์์ผ๋ฉฐ,
๋ฉ์๋ ์ฒด์ด๋ ๋ฐฉ์
์ผ๋ก ๋์ ์ฟผ๋ฆฌ๋ฅผ ์ฝ๊ฒ ์กฐ๋ฆฝํ ์ ์์ต๋๋ค.
Criteria API ์ ์
ํน์ง
โข
JPQL๊ณผ ๋์ผํ ๊ธฐ๋ฅ์ ์ ๊ณต
ํ๋ฉด์
์ปดํ์ผ ์์ ์ ์ค๋ฅ๋ฅผ ํ์ธ ๊ฐ๋ฅ
Criteria API
Querydsl
๊ธฐ์กด JPQL๊ณผ Criteria API์
๋ณต์กํ ์ฝ๋ ์์ฑ์ ๋จ์ํ
ํ๋ฉด์๋
๊ฐ๋ ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ๋์ฌ์ฃผ๋ ๊ธฐ๋ฅ
์ ์ ๊ณตํฉ๋๋ค.
Querydsl ์ ์
๋์ ์ฟผ๋ฆฌ๋ฅผ ๊ฐ๊ฒฐํ ์ฝ๋๋ก ์์ฑ
ํ ์ ์์ผ๋ฉฐ,
์ปดํ์ผ ์์ ์์ ์ค๋ฅ๋ฅผ ๊ฒ์ถ
ํ ์ ์์ต๋๋ค.
Querydsl
JPA ํ๋ก์ ํธ
๊ฒ์ํ ํ๋ก์ ํธ
1.
์ค๋น์ฌํญ
2.
์์กด์ฑ
3.
๋ฐ์ดํฐ ์์ค
4.
ํ๋ก์ ํธ ์ค์
5.
์ํฐํฐ ์ ์
6.
Repository ์ธํฐํ์ด์ค ์ ์ธ
์ค๋น์ฌํญ
1.
DB
๊ฒ์ํ ํ๋ก์ ํธ