DB에서 캐스케이드 제거와 고아 제거의 차이점은 무엇입니까?
차이점은 무엇입니까
@OneToMany(cascade=REMOVE, mappedBy="customer")
public List<Order> getOrders() { ... }
과
@OneToMany(mappedBy="customer", orphanRemoval="true")
public List<Order> getOrders() { ... }
이 예제는 Java EE Tutorial에서 많은 것이 여전히 세부 사항을 이해하지 못합니다.
에서 여기 :-
계단식 제거
참조 필드를 CascadeType.REMOVE (또는 REMOVE를 포함하는 CascadeType.ALL)로 표시하면 작업이 해당 필드에서 참조하는 엔터티 개체에 자동으로 연결되어야 함을 나타냅니다 (개체 개체는 컬렉션 필드에서 참조 할 수 있음). ).
@Entity class Employee { : @OneToOne(cascade=CascadeType.REMOVE) private Address address; : }
고아 제거
JPA 2는 @OneToOne 및 @OneToMany 주석의 orphan 제거 요소를 사용하여보다 적극적인 추가 제거 계단식 모드를 지원합니다.
@Entity class Employee { : @OneToOne(orphanRemoval=true) private Address address; : }
차 :-
두 설정의 차이점은 관계 연결 해제에 대한 응답입니다. 예를 들어 주소 필드를 null 또는 다른 주소 개체로 설정하는 경우입니다.
- 경우 orphanRemoval = 사실은 연결이 끊긴 주소 인스턴스는 자동으로 제거됩니다. 이것은 소유자 개체 (예 : 직원)의 참조없이 존재하는 존재 안되는 개체 (예 : 주소)를 정리하는 데 유용합니다.
- cascade = CascadeType.REMOVE 만 지정된 경우 관계 연결 해제는 제거
작업 이 아니 자동 작업이 수행되지 않는 작업 입니다.
CascadeType.REMOVE
과 의 차이점을 쉽게 수있는 방법 orphanRemoval=true
입니다.
고아 제거의 경우 :를 호출 setOrders(null)
하면 Order
관련가 db에서 자동으로 제거됩니다.
계단식 제거의 경우 : 호출 setOrders(null)
하면 Order
관련가 db에서 자동으로 제거되지 않습니다 .
마이너스 엔터티와 부모 엔터티가 가정합니다. 부모는 자녀를 번개 할 수 있습니다.
@Entity
class parent {
//id and other fields
@OneToMany (orphanRemoval = "true",cascade = CascadeType.REMOVE)
List<Personnel> myChildernList;
}
orphanRemoval은 ORM 개념이며 마이 고아인지 여부를 알려줍니다. 또한 데이터베이스에서 제거해야합니다.
부모로부터 액세스 할 수없는 마이너스는 고아가됩니다. (myChildernList.remove (i) 사용) null로 설정하거나 새 변경면 (personnelList.set (i, newChild)) 부모는 더 이상 해당 i에서 obj를 제거하거나 (myChildernList.remove (i) 사용) 그리고 아이가 고아가 되었기 때문에 아이는 데이터베이스 제거 될 운명에 처해 있습니다 (즉, 가슴에서 :()
CascadeType.REMOVE는 데이터베이스 수준 개념이며 부모가 제거 여부를 선택 테이블의 모든 관련 레코드를 제거해야 함을 알려줍니다.
실제로 차이점은 데이터를 업데이트 (PATCH) 할 것인지 아니면 데이터를 완전히 대체 할 것인지 (PUT)하는지 여부.
하자 당신이 삭제 말을 customer
사용하는 것 cascade=REMOVE
보다도 구성하고 유용한 것 같다 그 고객의 주문을 제거합니다.
@OneToMany(cascade=REMOVE, mappedBy="customer")
public List<Order> getOrders() { ... }
당신이 업데이트 이제 가정 해 봅시다 customer
과 orphanRemoval="true"
그 이전의 모든 주문을 삭제하고 제공 한 사람과 그들을 대체합니다. ( PUT
기준 REST API
)
@OneToMany(mappedBy="customer", orphanRemoval="true")
public List<Order> getOrders() { ... }
orphanRemoval
보관 명령이 보관 됩니다. ( PATCH
기준 REST API
)
'IT' 카테고리의 다른 글
이동을 목록으로 변환 (0) | 2020.09.13 |
---|---|
Matlab의 tic 및 toc 함수에 해당하는 Python은 무엇입니까? (0) | 2020.09.13 |
JavaScript에서 x, y 좌표를 사용하여 클릭을 시뮬레이션하는 방법은 무엇입니까? (0) | 2020.09.13 |
노드 값이 숫자인지 XPath 테스트 (0) | 2020.09.13 |
numpy 배열로 보시겠습니까? (0) | 2020.09.13 |