java session使用_使用Neo4j和Java进行大数据分析 第2部分

77d188c7ce31413f15cf29b41ea1e074.png

本文的第一部分介绍了Neo4j及其Cypher查询语言。如果您已经阅读了第1部分,那么您已经了解了为什么Neo4j和其他图形数据库特别受社交图形或网络中用户之间关系建模的影响。您还在开发环境中安装了Neo4j,并概述了使用此数据存储的基本概念 - 即节点和关系。

然后,我们使用Cypher查询语言对Neo4j中的一个家庭进行建模,包括年龄,性别和家庭成员之间的关系等个人属性。我们创建了一些朋友来扩大我们的社交图,然后添加键/值对来生成每个用户看过的电影列表。最后,我们查询了我们的数据,使用图形分析来搜索一个用户没有看到但可能喜欢的电影。

Cypher查询语言与SQL等传统数据查询语言不同。Cypher并没有考虑像表和外键关系这样的事情,而是强迫您考虑节点,节点之间的自然关系以及各个节点之间可以在各个关系之间进行的各种遍历。使用Cypher,您可以创建自己的心理模型,了解真实世界的实体如何相互关联。需要一些练习来擅长编写Cypher查询,但是一旦你理解了它们的工作方式,即使非常复杂的查询也是有意义的。

在使用Cypher查询语言对Neo4j中的社交图建模并使用该社交图编写查询后,编写Java代码以对该图执行查询非常简单。在本文中,您将学习如何将Neo4j与Java Web客户端应用程序集成,您可以使用它来查询我们在第1部分中创建的社交图。

设置您的Neo4j项目

我们的第一步是创建一个新的Maven项目:

mvn archetype:generate -DgroupId=com.geekcap.javaworld -DartifactId=neo4j-example -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

打开您的pom.xml文件并添加Neo4j驱动程序,在撰写本文时版本为1.4.1:

<dependency>
            <groupId>org.neo4j.driver</groupId>
            <artifactId>neo4j-java-driver</artifactId>
            <version>1.4.1</version>
        </dependency>

创建一个Neo4j驱动程序

接下来,创建一个Neo4j Driver,如下所示:

Driver driver = GraphDatabase.driver( "bolt://localhost:7687", AuthTokens.basic("neo4j", "neo4j"));

GraphDatabase类有一个叫做静态方法driver()接受一个连接Neo4j的URL和AuthToken。您可以使用默认用户名和密码“neo4j” 创建基本AuthToken

Driver与Neo4j的促进通信。我们通过要求Driver创建Session对象来执行查询,如下所示:

Session session = driver.session();

Session界面

org.neo4j.driver.v1.Session接口对Neo4j执行事务。在最简单的形式中,我们可以执行继承自的run()方法。然后,将开始一个事务,运行我们的语句,并提交该事务。Sessionorg.neo4j.driver.v1.StatementRunnerSession

StatementRunner接口定义了的几个变型run()方法。这是我们将使用的那个:

StatementResult run(String statementTemplate, Map<String,Object> statementParameters)

声明参数

statementTemplate是一个包含我们的Cypher查询的StringstatementParameters包括我们将使用的命名参数。例如,我们可能想要创建具有指定名称和年龄的Person

session.run("CREATE (person: Person {name: {name}, age: {age}})",
parameters("name", person.getName(), "age", person.getAge()));

{name}和{age}命名,可以通过传递解析为String值的Map。每个String都包含属性的名称,并且必须与模板中的值匹配。该parameters方法通常从Values对象静态导入:

import static org.neo4j.driver.v1.Values.parameters

管理交易

一个Session已经完成后,你需要通过调用它的close()方法来关闭。为方便起见,该Session对象实现了java.lang.AutoCloseable接口,因此从Java 7开始,您可以在try-with-resources语句中执行它,例如:

try (Session session = driver.session()) {
    session.run("CREATE (person: Person {name: {name}, age: {age}})",
    parameters("name", person.getName(), "age", person.getAge()));
}

最后,如果您正在执行的是要约束到一个单一事务的多条语句,你可以自由地绕过Sessionrun()方法的自动交易管理和明确自己管理的事务。例如:

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值