2010-05-20 2 views
1

나는 가지고있는 시나리오가 있습니다 : 몇 가지 간단한 속성 (int, String 등)과 2 개의 자식 집합을 가진 부모 클래스 Parent. childrenA 설정; childrenB 설정최대 절전 모드. 2 함수 : simpleSave(), saveWithCascade(). 그것을 할 수 있습니까? 그리고 어떻게?

데이터베이스에 부모 속성 만 저장하고 저장하고 saveWithCascade (Parent p) 함수를 자식에 연결하는 부모 simpleSave (Parent p)에 대한 저장 함수를 만들 수 있습니까?

나중에 편집 : 저장 실제로는 업데이트를 의미합니다. 왜냐하면 내가 속성이나 집합이 변경된 것을 알기 때문에 최대 절전 모드로 다른 변경 사항을 확인하기 위해 다른 모드를 선택하기 만하면됩니다.

답변

0

가능합니다. 최대 절전 모드 맵핑이 적절하게 정의되었다고 가정하십시오. 당신이 아이를 저장할 때 session.save(Parent)

를 호출 할 수 있습니다, 당신은 당신의 방법이 같은 몇 가지 일을 할 수

Parent p = new Parent(); 
Child c = new Child(); 
p.addChild(c); 
session.save(p); 
session.flush(); 
session.save(c); 
session.flush(); 

중요한 것은 아이가 관계를 구동하도록하는 것입니다. inverse = "true"

+0

부모와 자녀가 한 방향으로 만 연결된다면 어떨까요? – Blitzkr1eg

+0

아무 것도 할 필요가 없습니다. 기본적으로 inverse = "false" – Kartik

0

특정 연결에 대해 특정 작업을 계단식으로 연결하도록 최대 절전 모드를 구성하면이를 비활성화 할 수 없습니다. 따라서 원하는 것을 얻고 싶다면 PERSIST와 MERGE를 연쇄 처리하지 말고 수동으로 모든 작업을 saveWithCascade() 메소드에서 수행하는 것이 좋습니다.