"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > CascadeType.ALL을 사용하여 JPA에서 고아 노드를 처리하는 방법은 무엇입니까?

CascadeType.ALL을 사용하여 JPA에서 고아 노드를 처리하는 방법은 무엇입니까?

2024-11-04에 게시됨
검색:660

How to Handle Orphaned Nodes in JPA with CascadeType.ALL?

CascadeType.ALL을 사용하는 JPA의 고아 노드

JPA의 CascadeType.ALL을 사용함에도 불구하고 고아 노드가 데이터베이스에 지속되어 삭제를 방해합니다. 이 문제를 해결하려면 지속성 공급자 및 JPA 버전에 따라 여러 가지 접근 방식이 있습니다.

Hibernate 구성

Hibernate를 사용하는 경우 다음에서 CascadeType.DELETE_ORPHAN 주석을 명시적으로 정의합니다. JPA CascadeType.ALL과 결합:

@OneToMany(cascade = {CascadeType.ALL, CascadeType.DELETE_ORPHAN})
private List bikes;

JPA 솔루션(Hibernate 없음)

Hibernate가 없는 경우 상위 레코드를 제거하기 전에 하위 요소를 명시적으로 삭제합니다.

  1. 삭제할 기본 행을 가져옵니다.
  2. 하위 요소를 가져옵니다.
  3. 모든 하위 요소를 삭제합니다.
  4. 기본 행을 삭제합니다.
  5. 세션을 닫습니다.

JPA 2.0

JPA 2.0에는 orphanRemoval 속성이 도입되었습니다.

@OneToMany(mappedBy="foo", orphanRemoval=true)

orphanRemoval을 true로 설정하면 JPA는 상위 엔터티가 제거될 때 고아 하위 레코드를 자동으로 삭제합니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3