有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用java的gremlin事务处理

我正在使用java连接到使用gremlin的JanusGraph,并使用以下代码创建顶点和边。目前我正在使用g.tx()。提交()作为客户端的一部分。提交代码如下所示:

        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处理事务,或者这是唯一的方法

谢谢, 阿图尔


共 (1) 个答案

  1. # 1 楼答案

    如果您正在向远程JanusGraph服务器提交请求,那么这就是方法。您可以使用connect(<sessionId>)创建一个会话,然后针对它提交脚本。然而,在最近发布的TinkerPop 3.5.0中,该规则有一些变化。您现在可以执行基于字节码的会话以及基于脚本的会话,这意味着事务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