@OneToMany(mappedBy = "apiInfoEntity", cascade = CascadeType.ALL, orphanRemoval = true)
보통 1:N 관계 테이블 설정할때 저렇게 옵션을 추가해준다.
자식 엔티티의 변경이 있다면
JPA 에서 자식엔티티의 수정은 insert update update delete 순으로 이어지는데
변경된 자식을 먼저 insert 하고
기존의 자식을 NULL로 update 한다.
그리고 orphanRemoval 옵션을 true 로 하면 기존 NULL처리된 자식을 DELETE 한다.
PK(JoinColumn)값이 NULL로 변한 자식은 고아객체라고 하여 연결된 점이 없는 객체이다.
orphanRemoval옵션은 바로 이 고아객체를 삭제해주는 역활을 한다.
@OneToOne(orphanRemoval=true)
Emp 엔티티가 삭제될 때 참조가 끊어진 연관된 Addr 엔티티도 삭제하라는 의미이며 DB에서도 삭제되는데 참조(연결)가 끊어진 Addr 객체는 DB에서도 삭제된다는 뜻이다.
@OneToOne(cascade=CascadeType.REMOVE)
Emp 엔티티가 삭제될 때 연관된 Addr 엔티티도 삭제하라는 의미이며 DB에서도 삭제된다.
@OneToMany(orphanRemoval=true)
addresses 컬렉션에서 Addr 객체가 제거되는 경우 DB에서도 삭제하라는 의미.
반응형
'공부 > Spring' 카테고리의 다른 글
java.lang.IllegalArgumentException: Unknown return value type: java.math.BigInteger (0) | 2021.05.18 |
---|---|
saveAndFlush() / save() (0) | 2021.05.17 |
thymeleaf onclick href (0) | 2021.05.17 |
[spring] postgresql 이름의 릴레이션(relation)이 없습니다 (0) | 2021.05.13 |
Unknown column '' in 'field list' on MySQL error (0) | 2021.05.04 |