1
저는 데이터베이스에 데이터를 저장하기 위해 EntityManager를 사용하고 있습니다.EntityManager의 flush() 메서드는 언제 반환합니까?
public void save(X x){
entityManager.persist(x);
entityManager.flush();
triggerDataChange();
}
데이터를 세척 후에 나는 새로 기록 된 데이터에 의존하는 외부 구성 요소에 메시지를 보낼 수 triggerDataChange() 메서드를 호출합니다.
질문 : 데이터가 데이터베이스에 성공적으로 기록 된 후 을 반환하는 플러시 메서드를 사용할 수 있습니까?
도움 주셔서 감사합니다.
예, flushing은 DB의 변경 내용을 커밋합니다. (하지만 여전히 롤백 할 수 있습니다.) –
BTW : 최대 절전 모드를 사용하는 경우 가능한 플러시 모드를 확인하십시오. http://docs.jboss.org/hibernate/orm/3.5/api/org/hibernate/FlushMode.html –
"DB에 변경 내용을 커밋한다고 말하면"DB에 변경 내용을 적용하지 않는다 "는 의미입니다. 귀하의 다른 응용 프로그램은 데이터베이스에서 커밋되지 않은 데이터를 읽어야합니다. 실제로 원하는 것은 데이터를 커밋 (즉 트랜잭션 완료) 한 다음 외부 시스템에 호출하는 것입니다. 그렇지 않으면 외부 시스템이 롤백 할 수있는 데이터를 기반으로 결정을 내릴 수 있습니다. – davidfrancis