JPA μμμ±
JPAμμ κ°μ₯ μ€μν 2κ°μ§
- κ°μ²΄μ κ΄κ³ν λ°μ΄ν°λ² μ΄μ€ 맀ννκΈ°
- μμμ± μ»¨ν μ€νΈ(μν°ν°λ₯Ό μꡬ μ μ₯νλ νκ²½)
μν°ν°λ§€λμ λ₯Ό ν΅ν΄ μμμ± μ»¨ν μ€νΈμ μ κ·Ό
μν°ν°μ μλͺ μ£ΌκΈ°
- λΉμμ : κ°μ²΄λ₯Ό μμ±ν μν
- μμ : κ°μ²΄λ₯Ό μμμ± μ»¨ν μ€νΈμ μ μ₯ν μν (EX) persist() / But, 컀λ°κΉμ§ ν΄μΌ λλΉμ 쿼리 λ λΌκ°)
- μ€μμ : μμ μνμ μν°ν°κ° μμμ± μ»¨ν μ€νΈμμ λΆλ¦¬(detach(entity), clear(), close())
- μμ
μμμ± μ»¨ν μ€νΈμ μ΄μ
• 1μ°¨ μΊμ
• λμΌμ±(identity) 보μ₯ (κ°μ νΈλμμ μμ λΉκ΅μμ)
• νΈλμμ μ μ§μνλ μ°κΈ° μ§μ°
(transactional write-behind)
• λ³κ²½ κ°μ§(Dirty Checking)
• μ§μ° λ‘λ©(Lazy Loading)
//κ°μ²΄λ₯Ό μμ±ν μν(λΉμμ)
Member member = new Member();
member.setId("member1");
member.setUsername(“νμ1”);
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
//κ°μ²΄λ₯Ό μ μ₯ν μν(μμ)
//1μ°¨ μΊμμ μ μ₯
em.persist(member);
persist μμ μμμ± μ»¨ν μ€νΈμμ λ€μ΄κ°λ€.(dbμλ λ€μ΄κ°μ§ μμ μν)
commit κΉμ§ ν΄μΌ 쿼리λ₯Ό λ λ € dbμ λ€μ΄κ°λ€.
(persistνλ©΄ 1μ°¨ μΊμμ μ μ₯ν΄λκΈ° λλ¬Έμ μ‘°νν λ λλΉμ 쿼리λ₯Ό λ λ € μ‘°ννμ§ μκ³
1μ°¨μΊμμμ μ‘°ννμ¬ μΏΌλ¦¬λ₯Ό μ€μΌ μ μλ€.)
μμ μνκ° λλ κ²½μ° ?
- persist
- find
+) νλ¬μλ(flush)?
- μμμ± μ»¨ν μ€νΈμ λ³κ²½λ΄μ©μ λ°μ΄ν°λ² μ΄μ€μ λ°μ
- νΈλμμ μ»€λ° λλ JPQL 쿼리 μ€νμ νλ¬μ μλ νΈμΆ
- νλ¬μνλλΌλ 1μ°¨ μΊμμλ κ·Έλλ‘ λ¨μμλ€. (μμμ± μ»¨ν μ€νΈλ₯Ό λΉμ°μ§ μμ)