2016-07-08 1 views
0

Neo4j OGM manual говорит:Как Сессия # save (...) идентифицирует измененные объекты?

Под капотом, реализация Session имеет доступ к MappingContext, который отслеживает данные, которые были загружены из Neo4j во время жизни сессии. При вызове save() с сущностью он проверяет данный граф объекта для изменений по сравнению с данными, которые были загружены из базы данных. Различия используются для построения запроса Cypher, который сохраняет дельта до Neo4j до повторного заполнения его [sic] состояния на основе ответа сервера базы данных.

Как это работает? Это зависит от классов сущностей, переопределяющих hashCode(), или что?

ответ

3

Нет, OGM не полагается на реализацию hashCode. Вместо этого он использует собственный хеш на основе значений свойств, чтобы определить, изменился ли узел. Для отношений MappingContext содержит множество известных отношений от объектов, загруженных в сеанс, и после сохранения эта коллекция согласовывается с отношениями, собранными из сохраняемых объектов. Дельта в терминах добавленных, модифицированных или удаленных отношений используется для построения запроса Cypher, который отправляется в Neo4j.

 Смежные вопросы

  • Нет связанных вопросов^_^