다음은 Java Hibernate 레퍼런스 http://docs.jboss.org/hibernate/stable/core/manual/en-US/html/objectstate.html#objectstate-transitive에서 Hiberate 3.0 (즉, 현재 svn 트렁크)에 적용되었습니다.
Persist(), Merge(), SaveOrUpdate(), Delete(), Lock(), Refresh(), Evict(), Replicate()를 포함하여 Hibernate Session의 각 기본 동작에 대해 캐스케이드 스타일. 개별적으로 계단식 스타일의 이름은 persist, merge, save-update, delete, lock, refresh, evict, replicate입니다. Save() 및 Update()의 캐스케이드 스타일은 save-update입니다. SaveAndUpdateCopy()의 경우 병합됩니다. PersistOnFlush()에서는 지속됩니다. 그리고 remove는 삭제를위한 별명입니다.
작업을 연결을 따라 계단식으로 나타내려면 매핑 문서에 작업을 나타내야합니다. 예를 들어 :
<one-to-one name="person" cascade="persist"/>
케스 케이 딩 스타일들이 결합 될 :
<one-to-one name="person" cascade="persist,delete,lock"/>
당신은 모든 작업이 연관에 따라 케스케이드되어야 함을 지정하는 캐스케이드 = "모든"을 사용할 수 있습니다. 기본 cascade = "none"은 연산이 계단식으로 연결되지 않도록 지정합니다.
특수한 계단식 스타일 인 delete-orphan은 일대 다 연관에만 적용되며 연관에서 제거 된 자식 개체에 Delete() 작업을 적용해야 함을 나타냅니다. 모든 삭제 - 고아는 모두 삭제, 고아와 동일합니다.
권장 사항 : 그것은 일반적으로에 캐스케이드 수 있도록 이해가되지 않습니다
- < 대일 > 또는 < 대다 > 협회. 캐스케이드는 종종 < 일대일 > 및 < 일대 다 > 연관에 유용합니다.
- 자식 개체의 수명이 부모 개체의 수명으로 제한되는 경우 cascade = "all-delete-orphan"을 지정하여 수명주기 개체로 만듭니다.
- 그렇지 않으면 캐스케이드가 필요하지 않을 수도 있습니다. 그러나 동일한 거래에서 부모와 자녀들과 함께 자주 일할 것이라고 생각하고 타이핑을 자제하고 싶다면 cascade = "persist, merge, save-update"사용을 고려해보십시오.
는 (단일 값 연관이든 콜렉션 중 하나) 캐스케이드 매핑 = "모두"저장/업데이트에서 부모 결과의/삭제/업데이트 저장 부모/자식 스타일의 관계로 연결을 표시합니다/아이 또는 아이들의 삭제. 부모에 의해 참조 해제되지 않는 자식은 < 일대 다 많은 > 연관이 cascade = "delete-orphan"으로 매핑 된 경우를 제외하고는 자동으로 삭제되지 않습니다. 부모가 persist()에 전달된다
- 경우, 모든 아이들이 부모가 병합 전달되면()
- 을 지속하기 위해 전달되는 다음과 같이 부모/자식 관계에 대한 케스 케이 딩 오퍼레이션의 정확한 의미는
- 부모가 Save(), Update() 또는 SaveOrUpdate()에 전달 된 경우 모든 자식이 SaveOrUpdate()에 전달됩니다.
- 임시 또는 분리 된 자식이 영구 부모에 의해 참조되면 SaveOrUpdate()로 전달됩니다.
- 부모가 삭제되면 모든 chi ldren은 Delete()로 전달됩니다.
- 영속적 인 부모에 의해 참조 해제 된 경우, 특별한 경우는 없습니다 - 응용 프로그램이 cascade = "delete-orphan"이 아닌 한 응용 프로그램이 명시 적으로 자식을 삭제해야합니다.이 경우 "고아" 하위가 삭제됩니다.
+1 및 현상금, 매우 유용한 답변. –
안녕하세요! 귀하의 링크가 고장났습니다! –