ALOHA CLASS
/
Back-End
/
JPA
Search
Duplicate
Share
JPA
JPA
λ°μ΄ν°λ² μ΄μ€μ κ°μ²΄(Entity) κ° μλ λ§€νμ ν΅ν΄ λ°μ΄ν°λ₯Ό κ΄λ¦¬νλ
μλ° ORM
νλ μμν¬
β’
JPA
β’
JPA μ£Όμ κ΅¬μ± μμ
β’
JPA μ₯μ
β’
JPA vs MyBatis
JPA μκ°
ORM(Object-Relational Mapping)
κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ° μΈμ΄μμ κ΄κ³ν λ°μ΄ν°λ² μ΄μ€(RDB)λ₯Ό μ¬μ©ν λ κ°μ²΄(Object)μ λ°μ΄ν°λ² μ΄μ€μ κ΄κ³(Relation)λ₯Ό λ§€ννλ κΈ°μ
κ°μ²΄μ ν μ΄λΈμ 1:1λ‘ λ§€ννμ¬ SQLμ μ§μ μ¬μ©νμ§ μκ³ λ λ°μ΄ν°λ² μ΄μ€λ₯Ό μ‘°μν μ μλλ‘ λμμ£Όλ κΈ°μ μ λλ€.
β’
Persistence Framework
β¦
ORM
β¦
SQL Mapper
ORM
μν°ν°(Entity)
JPA μν°ν°λ λ°μ΄ν°λ² μ΄μ€μ ν μ΄λΈκ³Ό λ§€νλλ μμμ± κ°μ²΄
@Entity μ΄λ Έν μ΄μ μ μ¬μ©νμ¬ μ μλ©λλ€.
κ° μν°ν°λ κ³ μ ν μλ³μ(@Id)λ₯Ό κ°μ§λ©°, λ°μ΄ν°λ² μ΄μ€ ν μ΄λΈμ λ μ½λλ₯Ό μλ° κ°μ²΄λ‘ ννν©λλ€.
μν°ν°
κ΄κ³ λ§€ν
JPA κ΄κ³ λ§€ν κ°λ
JPAμμ μν°ν° κ°μ κ΄κ³λ₯Ό μ€μ ν λ
μ°κ΄ κ΄κ³ λ§€ν
μ μ¬μ©ν©λλ€. κ΄κ³λ λ€μκ³Ό κ°μ΄ λΆλ₯λ©λλ€.
β’
1:1 (One-To-One)
β
@OneToOne
κ΄κ³ λ§€ν
JPA μ£Όμ μ΄λ Έν μ΄μ
JPAμμ μμ£Ό μ¬μ©λλ μ΄λ Έν μ΄μ μ
κΈ°λ³Έ μν°ν°, κ΄κ³ λ§€ν, κΈ°ν κΈ°λ₯
μΌλ‘ λΆλ₯νμ¬ μ 리νμ΅λλ€.
μ£Όμ μ΄λ Έν μ΄μ
JPQL (Java Persistence Query Language)
JPQLμ JPA(Java Persistence API)μμ μ 곡νλ κ°μ²΄μ§ν₯ 쿼리 μΈμ΄λ‘, SQLκ³Ό μ μ¬νμ§λ§
μν°ν° κ°μ²΄λ₯Ό λμμΌλ‘ 쿼리λ₯Ό μν
ν©λλ€.
JPQL
Criteria API
Criteria APIλ
JPAμμ νμ μμ ν λμ 쿼리λ₯Ό μμ±
ν μ μλλ‘ μ§μνλ κΈ°λ₯μ λλ€.
SQLμ΄λ JPQLκ³Ό λ¬λ¦¬,
μλ° μ½λλ§μΌλ‘ 쿼리λ₯Ό μμ±
νκΈ° λλ¬Έμ μ»΄νμΌ μμ μμ μ€λ₯λ₯Ό μ‘μ μ μμΌλ©°,
λ©μλ 체μ΄λ λ°©μ
μΌλ‘ λμ 쿼리λ₯Ό μ½κ² 쑰립ν μ μμ΅λλ€.
Criteria API
Querydsl
Querydslμ
νμ μμ ν SQL λ° JPQL 쿼리λ₯Ό μμ±
ν μ μλλ‘ λμμ£Όλ νλ μμν¬μ λλ€.
κΈ°μ‘΄ JPQLκ³Ό Criteria APIμ
볡μ‘ν μ½λ μμ±μ λ¨μν
νλ©΄μλ
κ°λ μ±κ³Ό μ μ§λ³΄μμ±μ λμ¬μ£Όλ κΈ°λ₯
μ μ 곡ν©λλ€.
Querydsl