neo4j连接java目前主要有嵌入式、jdbc和rest api。
以neo4j文档的Jersey为例(实际有多种方式可以实现,目前觉得Jersey实现比较麻烦点,其他的都有封装好请求)。
使用的lib包:jersey-bundle-1.17.jar(这个比较不好找)和Jersey提供的包
String SERVER_ROOT_URI = "http://localhost:7474/db/data/"; final String nodeEntryPointUri = SERVER_ROOT_URI + "node"; WebResource resource = Client.create() .resource( nodeEntryPointUri ); // POST {} to the node entry point URI //通过post请求新建一个节点 ClientResponse response = resource.accept( MediaType.APPLICATION_JSON ) .type( MediaType.APPLICATION_JSON ) .entity( "{}" ) .post( ClientResponse.class ); final URI location = response.getLocation(); System.out.println( String.format( "POST to [%s], status code [%d], location header [%s]", nodeEntryPointUri, response.getStatus(), location.toString() ) ); response.close(); System.out.println(location.toString()); String propertyUri = location.toString() + "/properties/" + "name"; // http://localhost:7474/db/data/node/{node_id}/properties/{property_name} WebResource propertyResource = Client.create() .resource( propertyUri ); //根据拿回来的节点url,设置节点的属性 ClientResponse response1 = propertyResource.accept( MediaType.APPLICATION_JSON ) .type( MediaType.APPLICATION_JSON ) .entity( "\"Joe Strummer\"") .put( ClientResponse.class ); System.out.println( String.format( "PUT to [%s], status code [%d]", propertyUri, response1.getStatus() ) ); response.close();
jersey这种方式个人觉得不是很好使用,在创建一个节点时不能把属性加入进去,必须是{},然后在根据拿回来的节点url加入属性,比较繁琐,但是根据权重计算最短路径时,如果想使用服务式的neo4j。