如何从java app与neo4j服务器通信?

时间:2016-03-01 15:38:24

标签: java neo4j

我对如何从java连接远程neo4j服务器感到困惑。我可以直接使用neo4j api,我是否必须使用REST api ??

我们说我的服务器运行在270.270.270.270,我想:

cn = connect(270.270.270.270) 
results = cn.runSomeQuery //(with Cypher or... can I call a plugin or unmanaged extension?)  
return results

2 个答案:

答案 0 :(得分:1)

是的,核心Java API和REST HTTP API之间的二分法并不总是很容易掌握。从那里开始:http://neo4j.com/developer/java/

  

有两种方法可以使用JVM中的Neo4j。独立的Neo4j   服务器可以安装在任何机器上,然后通过HTTP访问   API。(...)

     

但是你也可以在你的JVM进程中运行Neo4j,就像   HSQL或Derby。

除非您100%确定只需要嵌入式数据库,否则可以查看http://neo4j.com/docs/stable/server-java-rest-client-example.html以获取在Java中使用REST API的示例。

final String txUri = SERVER_ROOT_URI + "transaction/commit";
WebResource resource = Client.create().resource( txUri );

String payload = "{\"statements\" : [ {\"statement\" : \"" +query + "\"} ]}";
ClientResponse response = resource
        .accept( MediaType.APPLICATION_JSON )
        .type( MediaType.APPLICATION_JSON )
        .entity( payload )
        .post( ClientResponse.class );

答案 1 :(得分:0)

我使用这样的东西。我使用我创建的方法创建连接,然后使用getHalt()等其他方法来运行查询。我猜这很简单。

   SELECT i.ID, i.name,i.rooms, RG.RoomGuests
     FROM Info_Table i 
LEFT JOIN (   SELECT R.ID, R.R_ID AS RG_ID,      
                     CONCAT('[',
                            GROUP_CONCAT(CONCAT('{\"NoOfAdults\":\"', Adult,'\",\n',
                                                 '\"NoOfChild\":\"',  Child,'\",\n',
                                                 '\"ChildAge\":',     IFNULL(CA.ChildAge, '[]'),'}')),
                            ']')
                       AS RoomGuests 
                FROM RoomGuests_Table R
           LEFT JOIN (  SELECT C.R_ID AS CA_ID, 
                               CONCAT('[',
                                      GROUP_CONCAT( Age SEPARATOR ','),
                                      ']') AS ChildAge
                          FROM ChildAge_Table C
                      GROUP BY CA_ID) CA
                  ON CA.CA_ID = R.ID) RG
       ON RG.RG_ID = i.ID
    WHERE i.ID = 'INFO3'
 GROUP BY RG_ID;