2

我有一个理解问题。我无法理解 Neo4jTemplate 中的数据库操作(如“getOrCreateNode()”)如何属于周围的事务。它是如何实施的?Neo4jTemplate 将在多线程环境中共享?我看不到交易的不同成员身份。我会理解这些操作是否直接在事务对象中(例如 tx.getOrCreateNode())。

@Service
public class TestService {

 @Autowired
 private Neo4jTemplate template;

  public void save(IndexedTriple triple) {
    GraphDatabase gdb = template.getGraphDatabase();
    Transaction tx = gdb.beginTx();

    Node subject = gdb.getOrCreateNode()
    ...

    tx.success();
    tx.finish();
  }
}

提前致谢。

4

1 回答 1

3

以下来自参考文档的摘录几乎总结了它。使用 spring 事务管理器而不是使用 Neo4j 事务,让 spring 负责分界。此外,事务管理是完全线程安全的。对于您,我建议使用@Transactional注释。如果已经存在一个事务,那么 spring 也会加入该现有事务。

交易

Neo4jTemplate 为其某些方法提供了隐式事务。例如 save 使用它们。其他修改操作请提供 Spring Transaction 管理使用@TransactionalTransactionTemplate.

于 2013-08-30T13:00:14.197 回答