π’ κ°μ²΄ μ§ν₯ 쿼리 μκ°
EntityManager.find() λ©μλλ₯Ό μ¬μ©νλ©΄ μλ³μλ‘ μν°ν° νλλ₯Ό μ‘°νν μ μλ€.
μ΄λ κ² μ‘°νν μν°ν°μ κ°μ²΄ κ·Έλν νμμ μ¬μ©νλ©΄ μ°κ΄λ μν°ν°λ₯Ό μ°Ύμ μ μλ€.
- μλ³μλ‘ μ‘°ν
- EntityManager
- κ°μ²΄ κ·Έλν νμ
- a.getA()
μ΄ κΈ°λ₯λ§μΌλ‘ μ ν리μΌμ΄μ μ κ°λ°νκΈ° μ΄λ ΅λ€.
μλ₯Όλ€μ΄ λμ΄κ° 30μ΄ μ΄μμΈ νμμ λͺ¨λ κ²μνκ³ μΆλ€λ©΄ μ’ λ νμ€μ μ΄κ³ 볡μ‘ν κ²μ λ°©λ²μ΄ νμνλ€,
κ·Έλ λ€κ³ λͺ¨λ νμ μν°ν°λ₯Ό λ©λͺ¨λ¦¬μ μ¬λ €λκ³ μ ν리μΌμ΄μ μμ 30μ΄ μ΄μμΈ νμμ κ²μνλ κ²μ νμ€μ±μ΄ μλ€.
κ²°κ΅ DB μ μμΌλ―λ‘ SQL λ‘ νμν λ΄μ©μ μ΅λν κ±Έλ¬μ μ‘°νν΄μΌ νλ€.
νμ§λ§ ORM μ μ¬μ©νλ©΄ DB ν μ΄λΈμ΄ μλ μν°ν° κ°μ²΄λ₯Ό λμμΌλ‘ κ°λ°νλ―λ‘
κ²μλ ν μ΄λΈμ΄ μλ μν°ν° κ°μ²΄λ₯Ό λμμΌλ‘ νλ λ°©λ²μ΄ νμνλ€.
- ν μ΄λΈμ΄ μλ κ°μ²΄λ₯Ό λμμΌλ‘κ²μνλ κ°μ²΄μ§ν₯ 쿼리λ€.
- SQL μ μΆμνν΄μ νΉμ DB SQL μ μμ‘΄νμ§ μλλ€.
SQL μ΄ DB ν μ΄λΈμ λμμΌλ‘ νλ λ°μ΄ν° μ€μ¬μ 쿼리λΌλ©΄ JPQL μ μν°ν° κ°μ²΄λ₯Ό λμμΌλ‘ νλ κ°μ²΄μ§ν₯ 쿼리μ΄λ€.
JPQL μ μ¬μ©νλ©΄ JPA λ μ΄ JPQLμ λΆμν λ€μ μ μ ν SQLμ λ§λ€μ΄μ DB λ₯Ό μ‘°ννλ€.
κ·Έλ¦¬κ³ μ‘°νν κ²°κ³Όλ‘ μν°ν° κ°μ²΄λ₯Ό μμ±ν΄μ λ°ννλ€.
JPQL μ νλ§λλ‘ μ μνλ©΄ κ°μ²΄μ§ν₯ SQL μ΄λ€.
μ²μ 보면 SQL λ‘ μ€ν΄ν μ λλ‘ λ¬Έλ²μ΄ λΉμ·νλ€.
λ°λΌμ SQL μ μ΅μν κ°λ°μλ λͺ κ°μ§ μ°¨μ΄μ λ§ μ΄ν΄νλ©΄ μ½κ² μ μ κ°λ₯νλ€.
JPA λ JPQL λΏλ§ μλλΌ λ€μν κ²μ λ°©λ²μ μ 곡νλ€.
π’ JPA κ° κ³΅μ μ§μνλ κΈ°λ₯
- JPQL
- Java Persistence Query Languge
- Crieria 쿼리
- JPQL μ νΈνκ² μμ±νλλ‘ λμμ£Όλ API
- JPQL μ νΈνκ² μμ±νλλ‘ λμμ£Όλ λΉλ ν΄λμ€ λͺ¨μ.
- λ€μ΄ν°λΈ SQL
- JPA μμ JPQL λμ μ§μ SQL μ μ¬μ©ν μ μλ€.
π’ JPA κ° κ³΅μ μ§μνμ§ μμ§λ§ μ°Έκ³ ν κΈ°λ₯
- QueryDSL
- Criteria 쿼리μ²λΌ JPQL μ νΈνκ² μμ±νλλ‘ λμμ£Όλ λΉλ ν΄λμ€ λͺ¨μ, λΉνμ€ μ€ν μμ€ νλ μ μν¬μ΄λ€.
- JDBC μ§μ μ¬μ©, Mybatis κ°μ SQL λ§€νΌ νλ μ μν¬ μ¬μ©
- νμνλ©΄ JDBC λ₯Ό μ§μ μ¬μ©ν μ μλ€.
κ°μ₯ μ€μν 건 JPQL μ΄λ€.
Crieria μ΄λ QueryDSL λ JPQL μ νΈνκ² μμ±ν μ μλλ‘ λμμ£Όλ λΉλ ν΄λμ€ μΌ λΏμ΄λ€.
λ°λΌμ JPQL μ μ΄ν΄ν΄μΌ λλ¨Έμ§λ μ΄ν΄ν μ μλ€.
'κ°λ°μ€ > Java Persistence API (JPA)' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
π‘ QueryDSLμ΄λ ? (0) | 2021.07.01 |
---|---|
π‘ JPQL μ΄λ ? (0) | 2021.07.01 |
Java κ°μ²΄/ κΈ°λ³Έκ° νμ μ νΉμ§ (0) | 2021.06.30 |
JPA - κ° νμ 컬λ μ (0) | 2021.06.30 |
JPA - μ¦μ λ‘λ©κ³Ό μ§μ° λ‘λ© (0) | 2021.06.28 |