我有一个理解问题。我无法理解来自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();
}
}
提前致谢。
答案 0 :(得分:3)
reference documentation的以下摘录总结了它。使用spring事务管理器而不是使用Neo4j事务,让spring处理分界。此外,事务管理完全是线程安全的。对你而言,我建议使用@Transactional
注释。如果已存在已存在的事务,则spring也会加入现有事务。
交易
Neo4jTemplate为其中一些提供了隐式事务 方法。例如,save使用它们。用于其他修改操作 请使用
@Transactional
或。提供Spring事务管理TransactionTemplate
。