Правильный способ ленивой загрузки узлов в Neo4J с помощью Java API

#java #neo4j

#java #neo4j

Вопрос:

Я просто хочу убедиться, что я не загружаю в память все узлы БД, только те, которые вызываются с помощью nodes.next() в итераторе. Это то, что у меня есть:

     try (Transaction tx = graphDB.beginTx()) {
        Node node = graphDB.getNodeById(1);
        ResourceIterator<Node> nodes = graphDB.traversalDescription().evaluator(Evaluators.all()).traverse(node).nodes().iterator();

        while (nodes.hasNext()) {
            Node node = nodes.next();
            // do stuff with the node...

       }
   }
  

Правильно ли это?

Ответ №1:

Да, это правильно.

Загружаются только те узлы, которые извлекаются nodes.next() .

Во время итерации он извлекает данные по мере необходимости для полного заполнения итератора.