java中neo4j
时间: 2025-03-07 09:02:08 浏览: 14
Java 使用 Neo4j 示例教程
建立连接并初始化环境
为了使Java应用程序能够与Neo4J交互,需先引入必要的依赖项。对于Maven项目而言,可以在pom.xml
文件内添加如下配置以集成最新版本的Neo4J JDBC驱动程序[^1]:
<dependency>
<groupId>org.neo4j.driver</groupId>
<artifactId>neo4j-java-driver</artifactId>
<version>4.4.6</version><!-- 版本号可能随时间更新 -->
</dependency>
如果采用Eclipse IDE,则应通过其内置工具加载外部库的方式导入位于Neo4J安装路径下lib
子目录中的所有.jar
文件[^2]。
创建会话和事务管理器
一旦完成上述准备工作之后,就可以编写代码片段用于获取到目标数据库实例上的读写权限了。下面给出一段简单的示例代码展示怎样利用Driver API建立新的Session对象,并开启Transaction以便后续执行Cypher语句:
import org.neo4j.driver.AuthTokens;
import org.neo4j.driver.Driver;
import org.neo4j.driver.GraphDatabase;
import org.neo4j.driver.Session;
public class DatabaseConnection {
private static final String URI = "bolt://localhost:7687";
private static final String USER = "neo4j"; // 默认用户名
private static final String PASSWORD = "password";
public Session getSession() {
Driver driver = GraphDatabase.driver(URI, AuthTokens.basic(USER, PASSWORD));
return driver.session();
}
}
定义实体类映射结构
当涉及到持久化具体业务逻辑的数据模型时,推荐借助于OGM(Object-Graph Mapping)框架实现面向对象编程范式的无缝对接。这里列举了一个基本的人类定义及其关联属性声明方式作为参考[^5]:
@Node("Person") // 映射至图谱内的节点标签名为'Person'
class Person {
@Property(name="name")
private String name;
@Relationship(type = "KNOWS", direction=Direction.OUTGOING)
private List<Person> knowsPeople;
// Getters & Setters...
}
执行CRUD操作
最后一步就是实际调用API接口来进行增删改查动作啦!此处仅摘取部分核心功能点加以说明——比如新增记录、查找特定条件匹配的结果集等常见需求场景下的做法[^3]:
// 插入新条目
String createQuery = "CREATE (a:Person {name:'Alice'}) RETURN a.name AS name";
Result result = session.run(createQuery);
System.out.println(result.single().get("name").asString());
// 查询指定名称的人物信息
String matchQuery = "MATCH (n{name:$personName}) RETURN n";
Map<String,Object> parameters = Collections.singletonMap("personName","Bob");
result = session.run(matchQuery,parameters);
while (!result.hasNext()) System.out.println("Not Found!");
else{
Record record = result.next();
Node node = record.get("n").asNode();
System.out.printf("%s was found.\n",node.get("name"));
}
// 更新已有字段值
String updateQuery = "MATCH (n{name:$oldName}) SET n.name=$newName RETURN n.name as updatedName";
parameters.putAll(Map.ofEntries(
Map.entry("oldName","Charlie"),
Map.entry("newName","Chuck")
));
session.writeTransaction(tx -> tx.run(updateQuery,parameters));
// 删除符合条件的对象
String deleteQuery = "MATCH (n{name:$targetToDelete}) DETACH DELETE n";
parameters.replace("targetToDelete","David");
session.writeTransaction(tx->tx.run(deleteQuery,parameters));
相关推荐

















