简介:
Neo4j是一个网络——面向图网络的数据库——也就是说,它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在图网络上而不是表中。图网络(从数学角度叫做图)是一个灵活的数据结构,可以应用更加敏捷和快速的开发模式。
嵌入式使用代码如下:
RelationshipType:
enum UserRelationship implements RelationshipType { FELLOW, BELONG }
调用:
public static void main(String[] args) { String DB_PATH = "G:/neo4j/db/data1/"; GraphDatabaseFactory factory = new GraphDatabaseFactory(); GraphDatabaseService gds = factory.newEmbeddedDatabase(DB_PATH); GlobalGraphOperations ggo = GlobalGraphOperations.at(gds); Transaction tx = gds.beginTx(); try { Node fromNode = gds.createNode(); fromNode.setProperty("table", "person"); fromNode.setProperty("name", "马云"); Node toNode = gds.createNode(); toNode.setProperty("table", "person"); toNode.setProperty("name", "李彦宏"); Relationship relationship = fromNode.createRelationshipTo(toNode, UserRelationship.FELLOW); List<String> eventList = new ArrayList<String>(); eventList.add("2013福布斯中国富豪榜:李彦宏第三、马化腾第五、马云第八 "); eventList.add("李彦宏推轻应用马云入股浏览器 移动入口争夺暗战升级 "); relationship.setProperty("event", JSON.toJSONString(eventList)); Node companyNode = gds.createNode(); companyNode.setProperty("table", "company"); companyNode.setProperty("name", "阿里巴巴"); Relationship belongRelationship = fromNode.createRelationshipTo(companyNode, UserRelationship.BELONG); belongRelationship.setProperty("event", "马云如何掌控阿里巴巴? "); tx.success(); } catch (Throwable e) { e.printStackTrace(); tx.failure(); } finally { tx.finish(); } Iterator<Node> iterator = ggo.getAllNodes().iterator(); while (iterator.hasNext()) { Node node = iterator.next(); Iterator<String> keysIterator = node.getPropertyKeys().iterator(); while (keysIterator.hasNext()) { String key = keysIterator.next(); System.out.println(key + "->" + node.getProperty(key)); } Iterator<Relationship> relationshipsIterator = node.getRelationships().iterator(); while (relationshipsIterator.hasNext()) { Relationship relationships = relationshipsIterator.next(); System.out.println("关系:" + relationships.getType()); } } gds.shutdown(); }
maven依赖:
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.1.36</version> </dependency> <dependency> <groupId>org.neo4j</groupId> <artifactId>neo4j-cypher-dsl</artifactId> <version>1.9.M04</version> </dependency> <dependency> <groupId>org.neo4j</groupId> <artifactId>neo4j-kernel</artifactId> <version>${neo4j.version}</version> </dependency> <dependency> <groupId>org.neo4j</groupId> <artifactId>neo4j-cypher</artifactId> <version>${neo4j.version}</version> </dependency> <dependency> <groupId>org.neo4j</groupId> <artifactId>neo4j-com</artifactId> <version>${neo4j.version}</version> </dependency> <dependency> <groupId>org.neo4j</groupId> <artifactId>neo4j-shell</artifactId> <version>${neo4j.version}</version> </dependency> <dependency> <groupId>org.neo4j</groupId> <artifactId>neo4j</artifactId> <version>${neo4j.version}</version> </dependency> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <neo4j.version>1.9.M04</neo4j.version> </properties>