λ°μν
Cascade
(μμμ± μ μ)
μ¬μ© μμΉ
- μ°κ΄κ΄κ³μ μ£ΌμΈ λ°λνΈ - λΆλͺ¨ μν°ν°(λ€λμΌ μμ μΌ)
- μ¦,
@OneToMany
κ° μλ μͺ½ λλ@OneToOne
λ κ°λ₯
μ¬μ© 쑰건
- μμͺ½ μν°ν°μ λΌμ΄ν μ¬μ΄ν΄μ΄ λμΌνκ±°λ λΉμ·ν΄μΌ νλ€.
- μλ₯Ό λ€μ΄, κ²μκΈμ΄ μμ λλ©΄ 첨λΆνμΌλ μμ λμ΄μΌ νλ€.
- λμ μν°ν°λ‘μ μμμ± μ μ΄λ νμ¬ μν°ν°μμλ§ μ μ΄ λμ΄μΌ νλ€.
- μλ₯Ό λ€μ΄, μ²¨λΆ νμΌμ κ²μκΈμ΄ μλ λ€λ₯Έ κ³³μμ μμμ± μ μ΄λ₯Ό νλ©΄ μλλ€.
μ΅μ μ’ λ₯
- ALL : μ 체 μν μ μ΄
- PERSIST : μ μ₯ μν μ μ΄
- REMOVE : μμ μν μ μ΄
- MERGE : μ λ°μ΄ν° μν μ μ΄
- REFRESH : κ°±μ μν μ μ΄
- DETACH : λΉμμμ± μν μ μ΄
orphanRemoval
(κ³ μ κ°μ²΄ μ κ±°)
μ¬μ© μμΉ
@OneToMany
λλ@OneToOne
μμ μ¬μ© - λΆλͺ¨ μν°ν°
μ¬μ©λ²
- Casscade.REMOVEμ λΉμ·ν μ©λλ‘ μμ λ₯Ό μ ννλλ° μ¬μ©λλ€.
- λΆλͺ¨ κ°μ²΄μμ 리μ€νΈ μμλ₯Ό μμ νμ κ²½μ°, ν΄λΉ μμ κ°μ²΄λ 맀ν μ λ³΄κ° μμ΄μ§λ―λ‘ λμ μμ ν΄μ€λ€.
β οΈ Cascade.REMOVE μ orphanRemoval μ μ°¨μ΄μ μ?
Cascade.REMOVE μ κ²½μ° 1μ ν΄λΉνλ λΆλͺ¨ μν°ν°λ₯Ό em.remove
λ₯Ό ν΅ν΄ μ§μ μμ ν λ, κ·Έ μλμ μλ μμ μν°ν°λ€μ΄ μμ λλ κ²μ΄λ€.
orphanRemoval=trueλ μ μΌμ΄μ€λ ν¬ν¨νλ©°, μΌμ ν΄λΉνλ λΆλͺ¨ μν°ν°μ 리μ€νΈμμ μμλ₯Ό μμ νκΈ°λ§ ν΄λ μμ μν°ν°κ° μμ λλ κΈ°λ₯κΉμ§ ν¬ν¨νκ³ μλ€κ³ μκ°νλ©΄ λ¨
μ¦, orphanRemoval=true λ 리μ€νΈ μμλ‘μ¨μ μμμ± μ μ΄λ ν΄μ€λ€λ λ»
Fetch
(μ‘°ν μμ )
μ¬μ© μμΉ
- Entityμ FetchTypeμΌλ‘ μ€μ ν μ μλ€.
@ElementCollection
,@ManyToMany
,@OneToMany
,@ManyToOne
,@OneToOne
- Query μν γ , fetch joinμ ν΅ν΄μ LAZY μΈ κ²½μ°λ μ¦μ λΆλ¬μ¬ μ μλ€.
μ¬μ©λ²
- κΈ°λ³ΈμΌλ‘ LAZYλ‘ μ€μ ν λ€μ, νμν λλ§ fetch joinμ μννλ€.
- νμ κ°μ΄ μ°μ΄λ μ°κ΄κ΄κ³μΌ κ²½μ°λ§ EAGERλ₯Ό μ€μ νλ€.
μ΅μ (fetchType)
- EAGER : μ¦μ λ‘λ©(λΆλͺ¨ μ‘°ν μ μμλ κ°μ΄ μ‘°ν)
- LAZY : μ§μ° λ‘λ©(μμμ νμν λ λ°λ‘ μ‘°ν)
728x90
λ°μν
'λ΄μΌλ°°μμΊ ν' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
JPA μ¬ν : Spring Data ꡬ쑰 λ° JpaRepository μ리 (0) | 2023.12.27 |
---|---|
JPA μ¬ν - ORM(JDBC , JQuery Mapper) (0) | 2023.12.19 |
Event-Driven Architecture (0) | 2023.12.12 |
κΉλ°₯ μ²κ΅ νλ‘μ νΈ KPT (0) | 2023.12.12 |
μ€νλ§ μ¬ν 5μ£Όμ°¨ : Spring AOP (0) | 2023.11.30 |