Neo4j Java Driver
官方提供的neo4j驱动程序,基于binary Bolt Protocol协议通信,用于执行Cypher脚本,类似jdbc driver;
优点:简单方便,多语言客户端支持;
缺点:
- 过于原始,需要熟悉Cypher语言,需要自己管理会话、事务等;
- 需要做neo4j的domain对象和java bean之间的转换工作,过于繁琐;
- 对于HA部署,无法支持负载分发、读写分离等特性;
demo
Driver driver = GraphDatabase.driver( "bolt://localhost:7687", AuthTokens.basic( "neo4j", "neo4j" ) );
Session session = driver.session();
session.run( "CREATE (a:Person {name: {name}, title: {title}})",
parameters( "name", "Arthur", "title", "King" ) );
StatementResult result = session.run( "MATCH (a:Person) WHERE a.name = {name} " +
"RETURN a.name AS name, a.title AS title",parameters( "name", "Arthur" ) );
while ( result.hasNext() )
{
Record record = result.next();
System.out.println( record.get( "title" ).asString() + " " + record.get( "name" ).asString() );
}
session.close();
driver.close();
Using the HTTP API
neo4j提供了一套http api接口,通过http+json的形式执行Cypher脚本。
优点:跨语言访问;
缺点:
- 性能相对较低;
- json拼接和解析麻烦;
- 对于HA部署,无法支持负载分发、读写分离等特性;
demo
https://neo4j.com/docs/rest-docs/3.1/
OGM(Object Graph Mapper) 工具
neo4j官方提供的neo4j domain对象到POJO的转换工具,支持基于Bolt、HTTP、Embedded三种访问形式的对象转化。
优点:提供注解形式,适用方便;
缺点:只是一个工具,基于Bolt形式,还是要写Cypher,基于Http形式还是要解析json~
demo:
https://neo4j.com/docs/ogm-manual/2.1/tutorial/
Spring Data Neo4j
基本功能:
- 通用的Spring与Spring Data基础设施。你可以轻松将Neo4j嵌入到Spring框架所管理的现有应用当中。
- 通过注解来声明结点以及结点之间的关系。
- 代码很容易理解。
- 实体状态由图型数据库所维护。
- 支持Neo4j服务器。
- 支持HA访问
文档:http://docs.spring.io/spring-data/neo4j/docs/current/reference/html/\#reference:configuration
demo:https://github.com/neo4j-examples/sdn4-cineasts/wiki
参考:https://www.infoq.com/minibooks/good-relationships-spring-data,GoodRelationships, spring data neo4j的作者编写