JPA3 [Spring] JPA μμμ± μ»¨ν μ€νΈ μ΄ν΄νκΈ° π€ μμμ± μ»¨ν μ€νΈλ? JPA μμμ± μ»¨ν μ€νΈ (Persistence Context) λ μν°ν°λ₯Ό μꡬ μ μ₯νλ νκ²½μ΄λΌλ λ»μΌλ‘, μ ν리μΌμ΄μ κ³Ό λ°μ΄ν°λ² μ΄μ€ μ¬μ΄μμ μν°ν°λ₯Ό κ΄λ¦¬νλ λ Όλ¦¬μ μΈ μμμ λλ€. EntityManager λ‘ μν°ν°λ₯Ό μ μ₯νκ±°λ μ‘°ννλ©΄ EntityManager λ μμμ± μ»¨ν μ€νΈμ μν°ν°λ₯Ό 보κ΄νκ³ κ΄λ¦¬ν©λλ€. π« μν°ν°μ μλͺ μ£ΌκΈ° μν°ν°μ μλͺ μ£ΌκΈ° μν°ν°μλ 4κ°μ§ μνκ° μ‘΄μ¬ν©λλ€. λΉμμ(new/transient) : μμμ± μ»¨ν μ€νΈμ μ ν κ΄κ³κ° μλ μν μμ(managed) : μμμ± μ»¨ν μ€νΈμ μ μ₯λ μν (μμμ± μ»¨ν μ€νΈμ μν΄ κ΄λ¦¬λλ€λ λ») μ€μμ(detached) : μμμ± μ»¨ν μ€νΈμ μ μ₯λμλ€κ° λΆλ¦¬λ μν μμ (removed) : μμ λ μν π«§ λΉμμ.. 2023. 6. 27. [Spring] νΌλλλ JPA κ°λ μ 리 (Hibernate, Spring Data JPA) π± μ΄ κΈμ μ°λ μ΄μ μ·¨μ μ€λΉλ₯Ό νλ©° λ©΄μ μ 보λ€λ³΄λ©΄ JPA μ κ°λ μ λ§€λ² λμ¬λ§νΌ λ¨κ³¨ μ§λ¬Έμ΄λΌκ³ λ³Ό μ μμ΅λλ€. νμ§λ§, λ§€λ² Hibernate λ JPA μ ꡬν체μ λλ€! λΌλ λλ΅λ§ ν΄μκ³ , μμ§ν μ°¨μ΄λ₯Ό μ λλ‘ μ΄ν΄νκ³ μμ§ μλ€κ³ λκΌμ΅λλ€. κ·Έλμ μ΄λ² κΈ°νμ JPA, Hibernate, Spring Data JPA μ μ°¨μ΄μ λν΄ κ³΅λΆνκ³ μ 리ν΄λ³΄λ μκ°μ κ°μ Έλ³΄λ € ν©λλ€. π π€ JPA λ? JPA λ Java Persistence API μ μ½μλ‘, μλ° μ ν리μΌμ΄μ κ³Ό κ΄κ³ν λ°μ΄ν°λ² μ΄μ€ μ¬μ΄μ λ°μ΄ν° μμμ±μ κ΄λ¦¬νκΈ° μν νμ€νλ μΈν°νμ΄μ€λ₯Ό μ 곡νλ κΈ°μ μ λλ€. JPA λ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°κ³Ό κ΄κ³ν λ°μ΄ν°λ² μ΄μ€ κ°μ λΆμΌμΉλ₯Ό ν΄κ²°νκΈ° μν΄ κ°μ²΄μ λ°μ΄ν°λ² μ΄μ€λ₯Ό λ§€ννλ .. 2023. 6. 27. [Spring] JPA λΉκ΄μ λ½ μ μ©μΌλ‘ λμμ± λ¬Έμ ν΄κ²°νκΈ° π€ λ¬Έμ μν© μ§νμ€μΈ λΈλΌμΈ νλ‘μ νΈμμ κ²μ κ²°κ³Ό μ‘°ν νμλ₯Ό μ¦κ°μν€λ λ‘μ§μ ꡬννλ κ³Όμ μμ λμμ± λ¬Έμ κ° λ°μν μ μλ μν©μ νμΈνμ΅λλ€. μλ₯Ό λ€μ΄ κ²μ κ²°κ³Όλ‘ κ½ A, B, C κ° μ‘°νλλ©΄ A, B, C μ μ‘°ν νμλ₯Ό κ°κ° 1μ© μ¦κ°μμΌμΌ νλλ°, λ§μ½ A μ νμ¬ μ‘°ν νμκ° 1μΌ λ, λμμ 3λ² μ‘°νλλ€λ©΄ κ²°κ³Όλ 4νκ° λμ΄μΌ νμ§λ§, 2νκ° λλ μν©μ΄μμ΅λλ€. μ΄λ₯Ό μνλ λ°©μλλ‘ λμμν€κΈ° μν΄ λΉκ΄μ λ½μ μ μ©ν΄λ³΄κΈ°λ‘ νμ΅λλ€. π» JPA λμμ± μ μ΄ λ°©μ JPA λ μν°ν°μ λν 무결μ±μ μ μ§ν μ μλλ‘ λμμ± μ μ΄ λ©μ»€λμ¦μ μ§μνκ³ μμ΅λλ€. μ΄ λ©μ»€λμ¦μλ λκ΄μ λ½κ³Ό λΉκ΄μ λ½μ΄ ν¬ν¨λ©λλ€. βοΈ λκ΄μ λ½ (Optimistic Lock) λκ΄μ λ½μ DB κ° .. 2023. 6. 15. μ΄μ 1 λ€μ