πλ€λ‘κ°κΈ°
κ³ μ κ°μ²΄(Orphaned Object)
- λΆλͺ¨ μν°ν°μ μ°κ΄κ΄κ³κ° λμ΄μ§ μμ μν°ν°λ₯Ό λ§ν¨
κ³ μ κ°μ²΄ μ²λ¦¬(Orphan removal) κΈ°λ₯
- λΆλͺ¨ μν°ν°μ μ°κ΄λ μμ μν°ν°κ° κ΄κ³κ° λμ΄μ§ λ μλμΌλ‘ μμ λλλ‘ μ€μ νλ κ²
- μ΄λ₯Ό ν΅ν΄ λ°μ΄ν°λ² μ΄μ€μ λΆνμν λ°μ΄ν°λ₯Ό μ κ±°ν μ μμ
μλ λ°©μ
- λΆλͺ¨ μν°ν°μ μμ μν°ν°κ° μ°κ΄λμ΄ μμ λ, λΆλͺ¨ μν°ν°μ μ°Έμ‘°μμ μμ μν°ν°λ₯Ό μ κ±°
- κ³ μ κ°μ²΄ μ²λ¦¬ κΈ°λ₯μ΄ νμ±νλ κ²½μ°, μμ μν°ν°λ κ³ μ κ°μ²΄λ‘ μ·¨κΈ
- κ³ μ κ°μ²΄λ λ°μ΄ν°λ² μ΄μ€μμ μλμΌλ‘ μμ λ¨.
- κ΄κ³λ₯Ό μ μνλ μ΄λ
Έν
μ΄μ
μμ orphanRemoval = true μ΅μ
μ μ€μ ν΄μΌ ν¨
@Entity
public class Parent {
// ...
@OneToMany(mappedBy = "parent", orphanRemoval = true)
private List<Child> children;
// ...
}
μ μμ μμ Parent μν°ν°λ μ¬λ¬ κ°μ child μν°ν°μ κ΄κ³κ° μλ€. orphanRemoval=true μ΅μ
μΌλ‘ μΈν΄ Parent μν°ν°μ children 컬λ μ
μμ Child μν°ν°λ₯Ό μ κ±°νλ©΄ ν΄λΉ Child μν°ν°κ° κ³ μ κ°μ²΄λ‘ μ·¨κΈλλ©° μλμΌλ‘ μμ λλ€.
Parent parent1 = em.find(Parent.class, id);
parent1.getChildren().remove(0);
//μμ μν°ν°λ₯Ό 컬λ μ
μμ μ κ±°
μμμ± μ μ΄μ κ³ μ κ°μ²΄ μ²λ¦¬μ λν μ£Όμμ¬ν
- μ€μ λ‘ κ°μ²΄λ₯Ό μμ νλ €λ μλμΈμ§, λ¨μν μ°Έμ‘°λ₯Ό λκ³ μΆμ κ²μΈμ§λ₯Ό λͺ
ννκ² κ³ λ €νκ³ μ€μ ν΄μΌ νλ€.
- κ²½μ°μ λ°λΌμλ κ³ μ κ°μ²΄ μ²λ¦¬λ₯Ό μ¬μ©νμ§ μκ³ λͺ
μμ μΌλ‘ μμ μν°ν°λ₯Ό μμ νλ κ²μ΄ λ μ μ ν μλ μλ€.
- κ³ μ κ°μ²΄ μ²λ¦¬λ μ°Έμ‘°νλ κ³³μ΄ νλμΌ λ μ¬μ©νλ κ²μ΄ μ μ νλ€.
- νΉμ μν°ν°κ° κ°μΈ μμ μΌ λ κ³ μ κ°μ²΄ μ²λ¦¬λ₯Ό μ¬μ©νλ©΄ μ’λ€.
- κ³ μ κ°μ²΄ μ²λ¦¬λ @OneToOne λ° @OneToMany κ΄κ³μμλ§ μ¬μ© κ°λ₯.