2016-07-08 56 views
0

Neo4j OGM manual說:會話#如何保存(...)以識別已更改的實體?

引擎蓋下的Session實施有權訪問跟蹤已從的Neo4j會話的生命週期中加載的數據的MappingContext。在用實體調用save()後,它會檢查給定的對象圖與從數據庫加載的數據相比所做的更改。這些差異用於構建一個Cypher查詢,該查詢在基於來自數據庫服務器的響應重新填充它的[sic]狀態之前將增量保留到Neo4j。

這實際上是如何工作的?它取決於覆蓋hashCode()的實體類,還是什麼?

回答

3

不,OGM不依賴於hashCode的實現。相反,它使用基於屬性值的散列來檢測節點是否發生了變化。對於關係,MappingContext保存來自會話中加載的實體的已知關係集,保存後,該集合與從保存的實體收集的關係一致。根據添加,修改或刪除的關係,delta用於構造發送給Neo4j的Cypher查詢。