Spring Data Neo4j如何开始交易工作?

时间:2013-08-30 08:17:09

标签: java neo4j spring-data spring-data-neo4j

我有一个理解问题。我无法理解来自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();
  }
}

提前致谢。

1 个答案:

答案 0 :(得分:3)

reference documentation的以下摘录总结了它。使用spring事务管理器而不是使用Neo4j事务,让spring处理分界。此外,事务管理完全是线程安全的。对你而言,我建议使用@Transactional注释。如果已存在已存在的事务,则spring也会加入现有事务。

  

交易

     

Neo4jTemplate为其中一些提供了隐式事务   方法。例如,save使用它们。用于其他修改操作   请使用@Transactional或。提供Spring事务管理   TransactionTemplate