πββοΈ JPAλ,
μλ° μ§μμ ORM(Object Relational Mapping) κΈ°μ νμ€μΌλ‘ ORM κΈ°μ μ μ¬μ©νκΈ° μν νμ€ μΈν°νμ΄μ€μ λͺ¨μ
πββοΈ ORMμ΄λ,
κ°μ²΄κ΄κ³ λ§€ν. μλ° νλ«νΌ SEμ EEλ₯Ό μ¬μ©νλ μμ©νλ‘κ·Έλ¨μμ κ°μ²΄λ κ°μ²΄ μ§ν₯μ μΌλ‘ μ€κ³νκ³ κ΄κ³ν λ°μ΄ν°λ² μ΄μ€λ κ΄κ³ν λ°μ΄ν°λ² μ΄μ€μ ν¨λ¬λ€μλλ‘ μ€κ³ν μ μλλ‘ μ€κ°μμ λ§€νμ ν΄μ£Όλ κΈ°μ
- μλ° κ°μ²΄μ DBν μ΄λΈμ λ§€ννκ³ μλ° κ°μ²΄κ°μ κ΄κ³λ₯Ό ν λλ‘ SQLμ μμ± λ° μ€ν ν μ μμΌλ©° λμ€μ μΈ μΈμ΄μλ λλΆλΆ ORM κΈ°μ μ΄ μ‘΄μ¬
πββοΈ κ³ λ € ν΄μΌν μ
μ΄ν리μΌμ΄μ μ΄ κ³ λν λλ©΄ JPAλ₯Ό ꡬννμ¬ μμ΄ λ§μ΄ κ°λ κ² λ³΄λ€ Mybatisκ° λ΅μ΄ λ μλ μμ
- JPAκ° λ¬΄μ‘°κ±΄ μ’μ κ² X
- λ€λ§ JPAλ μΆκ° λΌμ΄λΈλ¬λ¦¬λ₯Ό νμ©νλ©΄ 볡μ‘ν SQLμ΄λ λμ SQLμ μμ΄μ λμμ λ°μ μ μμ
μν | μ€λͺ |
---|---|
λΉμμ(new/transient) | μν°ν°κ° μμμ± μ»¨ν μ€νΈμ μ ν κ΄κ³κ° μλ μν |
μμ(managed) | μν°ν°κ° μμμ± μ»¨ν μ€νΈμ μ μ₯λ μν |
μ€μμ(detached) | μμμ± μ»¨ν μ€νΈμ μ μ₯λμλ€κ° λΆλ¦¬λ μν |
μμ (removed) | μμμ± μ»¨ν μ€νΈμ μ μ₯λμλ€κ° λΆλ¦¬λ μν |
λ³ν©(merge) | μν°ν°κ° μ€μμ μνμΈ μν°ν°κ° λ€μ μμμνλ‘ λ³κ²½λ μν |
find()
: μ‘°ν
persist()
: λ±λ‘
remove()
: μμ
detach()
: λΆλ¦¬
merge()
: detached Entity λ³ν©
clear()
: Persistence Context μ΄κΈ°ν
close()
: Persistence Context μ¬μ© μ’ λ£
commit()
/flush()
: 컀λ°
μμμ± μ»¨ν
μ€νΈ λ΄λΆμ MapμΌλ‘ κ΄λ¦¬λλ μΊμ
(keyλ @Idμ΄μ λ§€νν μλ³μ, valueλ μν°ν° μΈμ€ν΄μ€)
π μ΄ κ³³μ μλ μν°ν°λ μΊμμμ λ°λ‘ λΆλ¬μ€κΈ° λλ¬Έμ μ‘°ν μ±λ₯ ν₯μ
λ°λ³΅ν΄μ νΈμΆ μ 1μ°¨ μΊμμμ κ°μ μν°ν° μΈμ€ν΄μ€λ₯Ό κ°μ Έμ¬ μ μμ
μλ₯Ό λ€μ΄ μν°ν° λ±λ‘(INSERT) μ€ν μ, μν°ν° λ§€λμ λ νΈλμμ
μ 컀λ°νκΈ° μ§μ κΉμ§ λ°μ΄ν°λ² μ΄μ€μ μ μ₯(flush) λμ , μ°κΈ° μ§μ° SQL μ μ₯μ
μ INSERT SQLμ 차곑차곑 μκ² λλ©° μ»€λ° μμ 쿼리λ₯Ό λ°μ΄ν°λ² μ΄μ€λ‘ 보λ΄λλ° μ΄λ₯Ό νΈλμμ
μ μ§μνλ μ°κΈ° μ§μ°μ΄λΌκ³ ν¨
πββοΈ νλ¬μ(flush)λ, μμμ± μ»¨ν μ€νΈμ λ³κ²½ λ΄μ©μ λ°μ΄ν°λ² μ΄μ€μ λ°μνλ κ²
- νλ¬μ μ μ°¨
- μμμ± μ»¨ν μ€νΈμ 보κ΄ν λ μ΅μ΄ μν°ν° μνλ₯Ό 볡μ¬ν΄μ μ€λ μ·μΌλ‘ μ μ₯ν΄ λκ³ λͺ¨λ μν°ν°λ₯Ό μ€λ μ·κ³Ό λΉκ΅νμ¬ μμ λ μν°ν°λ₯Ό μ°Ύμ ν, μμ 쿼리λ₯Ό λ§λ€μ΄μ°κΈ° μ§μ° SQL μ μ₯μ
μ 보λ
-μ°κΈ° μ§μ° SQL μ μ₯μ
μ 쿼리λ₯Ό λ°μ΄ν°λ² μ΄μ€μ μ μ₯- νλ¬μλ₯Ό νλ κ²½μ°
em.flush()
λ₯Ό μ§μ νΈμΆ- νΈλμμ μ»€λ° μ νλ¬μκ° μλ νΈμΆ
- JPQL 쿼리 μ€ν μ νλ¬μκ° μλ νΈμΆ
πββοΈ λ³κ²½ κ°μ§λ, SQLμ μμ‘΄μ μ΄μ§ μλλ‘ μν°ν°μ λ°μ΄ν° λ³κ²½μ κ°μ§νκ³ λ°μ΄ν°λ² μ΄μ€μ μλμΌλ‘ λ°μνλ κΈ°λ₯
μμμ± μ»¨ν μ€νΈμ 보κ΄ν λ μ΅μ΄ μν°ν° μνλ₯Ό 볡μ¬ν΄μ μ μ₯ν μ€λ μ·κ³Ό μ΄λ₯Ό λΉκ΅νμ¬ κ°μ§νλ©° μμ μνμ μν°ν°μλ§ μ μ©λ¨ (μ€μμμ΄λ λΉμμμ ν΄λΉ X)
- λ³κ²½ κ°μ§ μ μ°¨ (μ»€λ° μ€ν μ)
- μ°μ μν°ν° λ§€λμ λ΄λΆμμ λ¨Όμ νλ¬μ(flush)κ° νΈμΆλ¨
- μν°ν°μ μ€λ μ·μ λΉκ΅ν΄μ λ³κ²½λ μν°ν°λ₯Ό μ°Ύμ
- λ³κ²½λ μν°ν°μ κ΄λ ¨λ μμ 쿼리λ₯Ό μμ±ν΄μ
μ°κΈ° μ§μ° SQL μ μ₯μ
μ 보λμ°κΈ° μ§μ° μ μ₯μ
μ SQLμ λ°μ΄ν°λ² μ΄μ€λ‘ 보λ- λ°μ΄ν°λ² μ΄μ€μμ νΈλμμ μ 컀λ°