作为记录,我使用的是 Neo4j 2.0.0-M02。
我目前有一种方法可以搜索其用户 ID 上带有标签“用户”的节点,该用户 ID 作为节点属性“id”存储在图中。这一切都发生在事务中,因为这会自动关闭 ResourceIterator。
现在,我想在两个用户之间建立关系。我所拥有的只是他们的用户 ID。现在,我显然想重用通过 id 搜索用户的方法。我能想到三种方法。
第一个是显而易见的。使用现有方法检索两个节点。然后调用创建它们之间关系的方法。显然,这也发生在一个事务中,因此这需要三个事务。没那么高效。
第二种只是在创建关系的新方法中重用代码(而不是方法)。这样,我可以在一个事务中完成所有操作,但是我正在复制代码,这对开发人员来说并不是一个很好的做法。
第三种是在创建关系的新方法的事务中调用现有方法两次。这样我的代码仍然可以重用,但我不确定嵌套事务在 Neo4J 中是如何工作的。是否会因为已有交易而忽略现有方法中的交易?那将解决我的问题。
如果没有,我必须重新考虑我在哪里管理我的交易。我知道在服务中管理它们通常比在 DAO 中更好,但我想将 Neo4j 的东西排除在我的服务类之外。