2012-03-02 5 views
2

큰 grails 도메인 개체 구조를 저장하려고하는데 도메인 클래스 수가 소수이지만 개체 수는 100 개 정도입니다. 객체는 고전 grails hasMany를 사용하여 연결됩니다.큰 도메인 개체 트리를 저장하기위한 팁

기본 아이디어는 데이터베이스를 먼저 지운 다음 사용자 정의 그루비 빌더를 사용하여 구성 DSL로 채우는 것입니다. 빌더는 완전한 객체 그래프/트리를 반환하고 저장하려고합니다.

루트 노드 만 저장하는 등 다양한 방법으로 저장하려고 시도했지만 모든 노드를 저장하는 전체 트리를 탐색합니다. 그러나 Hibernate는 플러시 된 세션에 대해 불평하는 다양한 곳에서 구제합니다.

누구나 비슷한 결과를 얻었습니까? 진행 방법에 대해 조언을 해줄 수 있습니까?

save() 작업을 빌드 프로세스의 일부로 통합하는 것이 더 좋을까요? nodeCompleted (부모, 노드)?

초과 된 최대 SQL 작업 수가 최대 절전 모드입니까?

답변

0

실제로 전체 객체 트리 (belongsTo 키워드 사용) 인 경우 루트 노드의 저장은 다른 모든 객체와 연계되어야합니다. 그러나 수동으로 저장하는 각 항목은 플러시라고 말하지 않는 한 작동해야합니다. 마지막 저장 외에는 true입니다. 나는 완전히 별개의 이유로 많은 수의 개체를 처리 할 때

는, 나는 도움과 같이 처리 매뉴얼 세션을 발견 :

MyDomainClass.withSession { context -> 
    //my stuff here 
    //save 
} 

또한 자체 오류 메시지를 볼 유용 할 수 있습니다 도메인 클래스 구조.

0

rootNode, addToChildNodes를 만들고 rootNode.save (flush : true)를 사용하여 객체 트리를 저장하려고하십시오.

관련 문제