이 스냅샷 영역은 처음에는 이해하기 어렵다고 생각했는데, 온라인에서 많은 블로그를 읽고 나니 이해가 되기 시작했습니다. ADO.NET을 기반으로 한 것으로 이해합니다. ADO.NET에는 SqlCommandBuilder라는 클래스가 있습니다. 제 생각에는 ADO.NET의 Hibernate 스냅샷 영역에 해당하는 것입니다. 메소드가 호출되면 데이터베이스의 정보가 업데이트될 수 있습니다(업데이트 및 삭제 포함). 필수 열거 클래스 중 하나는 행 상태 비트 RowState 클래스입니다. 이 행 상태 비트를 Hibernate(비교 캐시 영역 및 스냅샷 영역)와 비교할 것입니다. 해당하는 대로. 그러나 Hibernate는 캐시 영역을 Refresh할 때 캐시 영역과 스냅샷 영역의 내용을 비교한다.(
차이점을 발견하면 스냅샷 영역을 업데이트하고 업데이트 SQL 문을 저장한다. 새로 고침 동작이 아닌 경우 , 그러나 트랜잭션 작업을 제출하는 것입니다. 그러면 업데이트 문이 저장될 뿐만 아니라 SQL이 업데이트를 실행하기 위해 데이터베이스로 전송됩니다). 하지만 ADO.NET에서는 비교를 수행하지 않고 기록했습니다. (즉, 행의 RowStae 값 변경) 그리고 마지막으로 SqlCommandBuilder는 이 상태 비트와 기본 키를 기반으로 데이터베이스를 업데이트합니다. 실제로 특정 관점에서 보면 비교도 일종의 기록입니다(행 상태 수정과 유사). 비트), 트랜잭션이 제출될 때까지 데이터베이스에 업데이트됩니다.
한 문장을 추가합니다. 스냅샷은 데이터베이스의 스냅샷(처음에는 데이터베이스의 일부 행에 대한 스냅샷이지만 작업 후에는 더 이상 데이터베이스의 스냅샷이 아니지만 이후에는 트랜잭션이 제출되면 다시 데이터베이스의 스냅샷이 됩니다.)
SqlCommandBuilder에 대한 이 블로그를 읽을 수 있습니다
【SQLCommandBuilder class】
이 클래스도 있습니다【RowSate 수업】
제가 충분히 명확하게 설명하지 못했을 수도 있지만, 이것이 현재 제가 이해하고 있는 것입니다.위 내용은 Hibernate의 1단계 캐시와 스냅샷 영역 이해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!