본문 바로가기
개발공부 개발새발/DB

JPA ) 영속성 전이, 고아 객체

by 휴일이 2022. 11. 25.




영속성 전이 : CASCADE
: 얘는 연관관계, 즉시로딩 지연로딩과 아무 상관 없어여~

특정 엔티티를 영속 상태로 만들 때,
연관된 엔티티도 함께 영속 상태로 만들고 싶어요
ㄴ 부모 엔티티 저장할 때 자식 엔티티도 함께 저장하고 싶음...


부모를 persist 할 때,
얘랑 관련 된 자식들도 함께 persist 할 거야
@OneToMany(mappedBy="parent", cascade=CascadeType.ALL)


영속성 전이는 연관관계를 매핑하는 것과 아무 관련이 없다
엔티티를 영속화 할 때 편리함을 주는 것뿐


하나의 부모만 해당 자식들을 관리할 땐 좋다
좋은 예) 게시판, 첨부파일 경로... 게시판에서만 첨부파일 경로를 씀
나쁜 예) 자식이 여러군데에서 쓰이면 ㄴㄴ






고아 객체


고아 객체란????
부모 엔티티와 연관관계가 끊어져서 고아가 됨...


@OneToMany (orphanRemoval = true)
고아가 된 자식 엔티티를 자동으로 삭제해용...
부모 엔티티랑 연관관계가 끊어지면 자동 삭제


주의)
참조하는 곳이 하나일 때만 사용하세여!!!!
특정 엔티티가 개인 소유할 때만 사용하세여!!!!
@OneToMany @OneToOne 만 사용 가능
부모를 제거하면 자동적으로 자식도 제거됩니다, CASCADE REMOVE와 똑같이 동작함





영속성 전이 + 고아 객체를 같이 써볼까용?

CascadeType.ALL + orphanRemoval = true ??
부모가 자식의 생명주기 관리하게 됩니다
도메인 주도 설계(DDD)의 Aggreate Root 개념을 구현할 때 유용해용

728x90