-
11. 영속성 전이(CASCADE)와 고아 객체웹개발/Hibernate(JPA) 2020. 4. 28. 19:47
영속성 전이란?
특정 엔티티를 영속 상태로 만들때 연관된 엔티티도 함께 영속 상태로 만들고 싶을 때 사용한다.
ex) 부모 엔티티를 저장할 때 자식 엔티티도 함께저장
@OneToMany(mappedBy="parent", cascade = CascdeType.PERSIST)
양방향 매핑
양방향 매핑 설정 후 em.persist(order) 할시 orderfoods 까지 같이 persist 된다. cascade 설정을 하지 않을경우에는 당연히 order만 저장 된다.
영속성 전이는 연관관계 매핑과 아무 관계가 없다. 엔티티를 영속화할 때 연관된 엔티티도 함께 영속화하는 편리함을 제공할 뿐이다.
종류
- ALL
- PERSIST
- REMOVE
- MERGE
- PERFESH: REFRESH
- DETACH: DETACH
하나의 부모가 자식을 관리할때 즉 게시판이나 첨부파일의 테이블 데이터, 경로가 들어 갈경우 사용이가능 하다. 한게시물에서만 관리하기때문, 예를 들어서 파일을 여러군데에서관리 다른엔티티에서 관리할 경우 스면안된다. order이 orderfood를 관리할경우에만 사용이 가능. 소유자가 하나일때만 사용이 가능
라이프 사이클이똑같을때 order과 orderfood,
그리고 단일 소유자. 소유자가 하나일 경우. order에서 건드렷는데 다날라가면 골치아픔;;ㄷㄷ
고아객체
고아객체 제거 부모엔티티와 연관관계가 끊어진 자식 엔티티를 자동으로 삭제한다.
- orphanRemoval = true
@OneToMany
@OneToOne에만 적용
Parent parent1 = em.find(Parent.class id);
parent1.getChildren().remove(0);
//자식 엔티티를 컬렉션에서 제거한다.
영속성 전이 + 고아객체 , 생명주기
부모 엔티티를 통해서 자식의 생명옵션의 관리가 가능하다.
도메인 주도설계 DDD의 Aggregate Root개념을 구현할때 유용.
'웹개발 > Hibernate(JPA)' 카테고리의 다른 글
13. JPA에서 사용하는 다양한 쿼리 방법 (0) 2020.05.07 12. 데이터 타입 분류 (0) 2020.05.01 10. 즉시 로딩과 지연 로딩 (0) 2020.04.28 9. 프록시와 연관관계 (0) 2020.04.25 7. 고급매핑 (0) 2020.04.20