1

서문 :이 질문은 대신 NHibernate에 대해 구체적으로 말하면 this answer의 파생어입니다.NHibernate 트랜잭션 : 배치에 대한 INSERT-UPDATE_DELETE 순서가 어딘가에 기록되어 있습니까?

는 최대 절전 모드로, org.hibernate.event.def.AbstractFlushingEventListener.performExecutions (EventSource)에 javadoc는 말한다 :

는 외국계 있도록 특별 순서로, 모든 SQL 및 second-level 캐시 업데이트를 실행 키 제약 조건 위반 될 수 없습니다 : 콜렉션 요소의

  1. 삽입, 순서대로 그들이 수행 하였다
  2. 업데이트 삭제 수집
  3. 삽입 엘 이 순서가 너무 NHibernate에 적용 되는가가 최대 절전 모드로 적용되면

    1. : ements
    2. 삭제, 순서대로 그들은

내 질문을 실시 하였다?

  • 결정적 순서가 어딘가에 기록되어 있습니까?
  • 기타 -이 동작이 DBMS 관련 사항 인 경우 SQL Server를 사용하고 있습니다.

    답변

    3

    NHibernate 3.3의 문서는 Session.Flush가 호출 될 때의 단계 (9.6 절)를 자세히 설명합니다.

    단계는 :

    • 모든 엔티티 삽입은, 대응하는 객체가되는 것과 같은 순서 session.FlushMode = FlushMode.Commit;의 경우 이것은 트랜잭션 배치가 실행되는 방법이며 ISession.Save()를 사용하여 저장

    • 모든 항목 업데이트

    • 모든 컬렉션 삭제

    • 모든 컬렉션 요소 삭제, 업데이트 및 삽입

    • 해당 개체 ISession을 이용하여 삭제 된 동일한 순서로 모든 콜렉션 삽입

    • 모든 엔티티 결실. 삭제()

    저는 대부분 SQL Server (2008)를 사용하고 있습니다. 이 방법으로 일한다고 말할 수 있습니다 ..

    +0

    +1 : Many Thanks! –

    관련 문제