在引擎盖下,
Session
的实现可以访问MappingContext
,跟踪在会话生命周期内从Neo4j加载的数据。在使用实体调用save()
时,它会检查给定的对象图以查找与从数据库加载的数据相比的更改。这些差异用于构建一个Cypher查询,该查询在根据数据库服务器的响应重新填充它的[sic]状态之前将增量保留给Neo4j。
这实际上如何运作?它取决于覆盖hashCode()
的实体类,还是什么?
答案 0 :(得分:3)
不,OGM不依赖于hashCode的实现。相反,它使用它自己的基于属性值的散列来检测节点是否已更改。对于关系,MappingContext保存来自会话中加载的实体的已知关系集,并且在保存时,该集合与从保存的实体收集的关系进行协调。根据添加,修改或删除的关系,delta用于构造发送到Neo4j的Cypher查询。