我正在使用 java 连接到 JanusGraph,使用 gremlin 并使用以下代码创建顶点和边。目前我正在使用 g.tx().commit() 作为 client.submit 的一部分,如下代码所示:
try {
String sessionId = UUID.randomUUID().toString();
Client client = cluster.connect(sessionId);
client.submit("graph.tx().open()");
client.submit("g.addV('Person').property('Name', 'Justin').next()");
**client.submit("graph.tx().commit()");**
List<Result> rs = client.submit("g.V().count()").all().join();
System.out.println("Result size is "+rs.size());
System.out.println(rs.get(0).getString());
client.closeAsync();
} catch (Exception e) {}
所以想知道是否有其他更合适的方法来使用 java 处理事务,或者这是唯一的方法。
谢谢, 阿图尔。
最佳答案
如果您要向远程 JanusGraph 服务器提交请求,那么就是这样做的方法。您使用connect(<sessionId>)
创建一个 session ,然后针对它提交脚本。然而,在最近发布的 TinkerPop 3.5.0 中,该规则发生了变化。您现在可以执行基于字节码的 session 以及基于脚本的 session ,这意味着事务 API 现在对于嵌入式和远程用例来说是统一的。您可以在 3.5.0 升级文档中查看更多信息 here .
3.5.0 版本是最近发布的,几周前才发布。因此,在回答这个问题时,JanusGraph 尚不支持它(尽管工作已经开始 here )。在您使用支持 TinkerPop 3.5.0 的 JanusGraph 版本之前,您有两种事务选项:
- 您正在为远程用例所做的操作,或者,
- 在 embedded style 中使用 JanusGraph .
对于后者,取自所提供链接中的文档:
graph = JanusGraphFactory.open("berkeleyje:/tmp/janusgraph")
juno = graph.addVertex() //Automatically opens a new transaction
juno.property("name", "juno")
graph.tx().commit() //Commits transaction
关于java - 使用 java 进行 gremlin 事务处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67615528/