SDN4 — обработчики событий жизненного цикла объекта, совместимые с GraphRepository

Я использую Spring Data Neo4j 4.0.0.RELEASE и хотел бы воспользоваться встроенными событиями обработки данных, чтобы на лету вставлять некоторую информацию аудита (например, временные метки). Документация кажется, предполагает, что это доступно мне только в том случае, если я напрямую использую Neo4jTemplate.

Существуют ли аналогичные хуки для абстракции GraphRepository? То есть есть ли готовый способ подключиться к операциям репозитория графов (а-ля Spring DataJPA?). Я написал несколько тестов и могу подтвердить, что задокументированные события не срабатывают, когда я просто использую GraphRepository .


person simonl    schedule 13.09.2015    source источник
comment
Эти хуки также должны работать с репозиторием, так как он внутри использует шаблон.   -  person M. Deinum    schedule 14.09.2015
comment
Хм, я не верю, что это так, по крайней мере, исходя из того, что я вижу в исходном коде в GraphRepositoryImpl. На данный момент я обошел это, создав пользовательский аспект, который перехватывает вызовы GraphRepository.save(..) и запускает события манипулирования данными.   -  person simonl    schedule 14.09.2015
comment
Не знаю, на что вы смотрите, но this явно использует шаблон... Так что не уверен, какую реализацию вы ищете.   -  person M. Deinum    schedule 14.09.2015
comment
Ах, это может быть более старая версия? Я смотрю на это. Опять же, я использую 4.0.0.RELEASE; AbstractGraphRepository не отображается в моем пути к классам.   -  person simonl    schedule 15.09.2015
comment
Ну, это мастер, на который я смотрел, а не ветку, так что на самом деле это самая последняя версия, я бы сказал :). Так что я бы посчитал это упущением/регрессом по сравнению с другими версиями. Также не уверен, каков статус версии 4.0...   -  person M. Deinum    schedule 15.09.2015


Ответы (1)


AbstractGraphRepository взято из кодовой базы 3.x, поэтому здесь не имеет прямого отношения.

Как уже отмечалось, SDN 4 еще не обеспечивает автоматическую поддержку интерфейсов Spring RepositoryEventListener. Правильная реализация прослушивателей событий в SDN 4.0 сложна из-за природы лежащего в основе механизма сохранения, который сохраняет целое дерево «грязных» объектов, а не только один объект верхнего уровня. Если объект, который вы хотите перехватить, не является сохраняемой сущностью верхнего уровня, прослушиватель событий для него не сработает.

В настоящее время команда разработчиков SDN рассматривает наилучший способ включения обработчиков событий для объектов, которые могут сохраняться на любой глубине в дереве сохранения.

Тем временем решение, предложенное simonl, должно работать.

person Vince    schedule 15.09.2015