0

내 도메인 클래스 내부의 데이터베이스에서 작업을 수행 할 때 flush : true로 설정해야하는지 궁금합니다. 예 :도메인 클래스 업데이트 및 세션 플러시?

class TreeNode {  

    TreeNode removeFromChildren(TreeNode child) { 
     TreeNodeChild.findByNodeAndChild(this, child).delete(flush: true) 
     this 
    } 
    ... 
} 

또는 다음 올바른 표기법은 무엇입니까?

class TreeNode {  

    TreeNode removeFromChildren(TreeNode child) { 
     TreeNodeChild.findByNodeAndChild(this, child).delete() 
     this 
    } 
    ... 
} 

질문 : 세션을 플러시해야합니까?

답변

2

the docs에서 플러시의 정의를 촬영 :

을 즉시 삭제되는 경우의 결과로 플러시됩니다 진정한 지속 문맥으로 설정된 경우입니다.

그리고 여기에는 this related question이 더 있습니다. 귀하의 질문에 대한 관련 부분은 다음과 같습니다

하자 Hibernate는이 작업이고 당신이, 또는 적어도 만 업데이트의 배치의 끝에서 경우에만 수동으로 세션을 세척 할. 이 있어야 데이터베이스에 데이터가 표시되지 않는 경우에만 을 사용해야합니다. 나는 그것이 약간의 wishy-washy 인 것을 안다. 그러나 그런 행동이 필요한 때 상황은 데이타베이스 구현과 다른 요인에 의존한다.

가 플러시해야하는 경우이 방법의 호출자가 결정하도록 할 수 있습니다, 말했다 :

TreeNode removeFromChildren(TreeNode child, boolean flush = false) { 
    TreeNodeChild.findByNodeAndChild(this, child).delete(flush: flush) 
    this 
}