JPA 연관 관계 - 고아 객체
목차 JPA 연관 관계 - 고아 객체 JPA 연관 관계 - 즉시로딩과 지연로딩 JPA 연관 관계 - 프록시 객체 JPA 연관 관계 - @MappedSuperclass JPA 연관 관계 - 상속 관계 Mapping JPA 연관 관계 - 영속성 전이 Cascade JPA 연관 관계 - 양방향 연관관계와 연관과계의 주인 JPA 연관 관계 - 양방향 연관관계 JPA 연관 관계 - 객체 지향 스럽게 모델링 하기 JPA 연관 관계 - 객체 관계 모델링하기 JPA 연관 관계 고아 객체란? 부모 엔티티와 연관관계가 끊어진 자식 엔티티 고아 객체 제거 부모 엔티티와 연관관계 가 끊어진 자식 엔티티를 자동으로 제거 @OneToOne, @OneToMany 만 가능하다. orphanRemoval = true @Entity@Getter@Setterpublic class Parent { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; @OneToMany(mappedBy = "parent", cascade = CascadeType.ALL, orphanRemoval = true) private List<Child> childList = new ArrayList<>(); public void addChild(Child child){ childList.add(child); child.setParent(this); }} public class JpaMain { public static void main(String[] ars) { EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("hello"); EntityManager em = entityManagerFactory.createEntityManager(); EntityTransaction transaction = em.getTransaction(); transaction.begin(); try { Child child1 = new Child(); Child child2 = new Child(); Parent parent = new Parent(); parent.addChild(child1); parent.addChild(child2); em.persist(parent); em.flush(); em.clear(); Parent savedParent = em.find(Parent.class, parent.getId()); savedParent.getChildList().remove(0); transaction.commit(); } catch (Exception e) { transaction.rollback(); } finally { em.close(); } entityManagerFactory.close(); }} Parent 에서 Child를 삭제할 때 delete 쿼리가 발생하게 된다.