java - 使用 java 进行 gremlin 事务处理

标签 java gremlin janusgraph

我正在使用 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 版本之前,您有两种事务选项:

  1. 您正在为远程用例所做的操作,或者,
  2. 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/

相关文章:

java - 简而言之,主要功能行为 - 一个源文件中的多个类

.net - Gremlin.net 3.3.1 ValueMap<Tkey, Tvalue>

java - super.input1 = input.nextInt();

java - 带有 @RunWith(SpringJUnit4ClassRunner.class) 的配置文件

gremlin - 在 TinkerPop3 Gremlin 查询和 JanusGraph 中获取数组的第一项作为对象

azure - 如何使用 Gremlin API 在 Azure Cosmos DB 中创建元图

python - Gremlin 绑定(bind)方法支持

elasticsearch - Janusgraph预包装分销: Cassandra forking exceeded timeout

python - asyncio - 有多少协程?

java - 如何在Gluon Mobile项目中更改jdk?