Neo4j学习笔记(1)——使用Java API实现简单的增删改查

项目的创建及配置

因为Neo4j依赖的jar包比较多,所以推荐使用Maven来管理。

首先创建一个Maven Project,添加依赖:

Neo4j学习笔记(1)——使用Java API实现简单的增删改查
<dependency>
<groupId>org.neo4j</groupId>
<artifactId>neo4j</artifactId>
<version>3.2.6</version>
</dependency>
Neo4j学习笔记(1)——使用Java API实现简单的增删改查

使用的是3.2.6版本,对应版本的Neo4j安装地址摸我

使用嵌入式数据库

配置好之后,就可以开始了,第一步是学习开启和关闭数据库。

无论是创建一个新的数据库,还是打开一个已有的数据库,首先都需要创建一个GraphDatabaseService实例。

graphDb = new GraphDatabaseFactory().newEmbeddedDatabase( DB_PATH );

GraphDatabaseService实例可以被多个线程共享,但是一个数据库只允许有一个Service实例。

关闭数据库可以调用shutdown()方法。

为了确保数据库正确地关闭,可以添加一个ShutdownHook来实现关闭数据库的动作。

Neo4j学习笔记(1)——使用Java API实现简单的增删改查
private static void registerShutdownHook(final GraphDatabaseService graphDb) {
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
graphDb.shutdown();
}
});
}
Neo4j学习笔记(1)——使用Java API实现简单的增删改查

还可以通过API对数据库的一些配置进行设置。

一种方法是加载.conf配置文件。

GraphDatabaseService graphDb = new GraphDatabaseFactory()
.newEmbeddedDatabaseBuilder( testDirectory.graphDbDir() )
.loadPropertiesFromFile( pathToConfig + "neo4j.conf" )
.newGraphDatabase();

另一种方法就是通过方法来添加。

Neo4j学习笔记(1)——使用Java API实现简单的增删改查
GraphDatabaseService graphDb = new GraphDatabaseFactory()
.newEmbeddedDatabaseBuilder( testDirectory.graphDbDir() )
.setConfig( GraphDatabaseSettings.pagecache_memory, "512M" )
.setConfig( GraphDatabaseSettings.string_block_size, "60" )
.setConfig( GraphDatabaseSettings.array_block_size, "300" )
.newGraphDatabase();
Neo4j学习笔记(1)——使用Java API实现简单的增删改查

创建一个只读的数据库,数据库必须已经存在。

graphDb = new GraphDatabaseFactory().newEmbeddedDatabaseBuilder( dir )
.setConfig( GraphDatabaseSettings.read_only, "true" )
.newGraphDatabase(); 

更多配置信息可以看GraphDatabaseSettings类的文档

创建节点和关系

图数据库是一个有向图,由通过关系Relationships连接的节点Nodes构成,节点和关系可以有自己的属性Properties

关系的类型可以通过枚举enum创建(Label也可以):

private static enum RelTypes implements RelationshipType
{
RELEASED;
}

在Neo4j中,对于数据库的操作需要在一个事务transaction中执行。

Neo4j学习笔记(1)——使用Java API实现简单的增删改查
try ( Transaction tx = graphDb.beginTx() )
{
// 数据库操作写在事务提交之前
tx.success();
}
Neo4j学习笔记(1)——使用Java API实现简单的增删改查

下面是一个简单的实例,实现了节点和关系的创建。

Neo4j学习笔记(1)——使用Java API实现简单的增删改查
try (Transaction tx = graphDb.beginTx()) {
// 创建标签
label1 = Label.label("Musician");
label2 = Label.label("Album");
// 创建节点
node1 = graphDb.createNode(label1);
node1.setProperty("name", "Jay Chou");
node2 = graphDb.createNode(label2);
node2.setProperty("name", "Fantasy");
// 创建关系及属性
relationship = node1.createRelationshipTo(node2, RelTypes.RELEASED);
relationship.setProperty("date", "2001-09-14");
// 结果输出
System.out.println("created node name is" + node1.getProperty("name"));
System.out.println(relationship.getProperty("date"));
System.out.println("created node name is" + node2.getProperty("name"));
// 提交事务
tx.success();
}
Neo4j学习笔记(1)——使用Java API实现简单的增删改查

对于节点,除了设置属性,还可以添加标签Labels。添加标签之后就相当于对节点进行了分组,使节点的查询和管理更加清晰和方便,并且提高了查询的性能。标签是一个可选项,没有标签也是可以的。

与关系数据库相比,标签相当于表名。一个节点相当于表中的一行数据,节点的属性就是字段。区别是,一个节点可以有多个标签

可以看到我们创建了两个节点,名字是“周杰伦”和“《范特西》”,对应的标签分别是音乐家和专辑。

他们之间通过“发行”这个关系连接,其中发行的属性为发行日期。

打开Neo4j数据库,输入查询语句match (n) return n,可以看到数据被写入了进来。

aaarticlea/png;base64,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KGhasp3HDY+8Pr98dlAZIUMJyQnKerCoUyUXDAQUspy7DRker/wJ/sipqJmXs69aMKhQjjb9Pk804DIVSAtICdlPLbWCGYd+ZywzEg4412jG8y9qfvELdNdtZ6ti9mNkwyZBI3Pc0UZz2Bx4lSVz50JNHDdFK2v30INXNVVyzhNYY+pX1Nv2KynxyAGfs7Q4GAzJDNtKhuE97NzboYAyQqbs8DRE5uyAbzixVCAQkOksLTY88vkT5LUDyjC92foR/haO2LfItxS721FQzIDSArb80W8x8+7s32SMsNyGAAIIIIAAAggggAACCCCAAALHtUA+BXRZ4qFgujJsfzREO66tYx+8bSp920+aOO4D/VGula7/v4tU7+jH3h7cvm0p9c9ZmjzxK60rf77+74Y2OikpW0wZe5+4EwEEEEAAAQQQQAABBBBAAAEEEEAgXwTyPaDLl14fD406yzt3/aFZ77yrudtOUc9BF6lePON2qv9SZmncuNkyzuyua86rr/LJ8S9tjeeV3IsAAggggAACCCCAAAIIIIAAAgggEL8AAV38ZsfwCUvBjIB27UxTucplI4fHxnHZ1h5t32KoRLliSvBnLsuNowFuRQABBBBAAAEEEEAAAQQQQAABBBDIdwECunwnzvsLbNuWYcSzd1/mO23ZtqFcPZr3btMCAggggAACCCCAAAIIIIAAAggggEAMAgR0MSBxCwIIIIAAAggggAACCCCAAAIIIIAAAvklQECXX7K0iwACCCCAAAIIIIAAAggggAACCCCAQAwCBHQxIHELAggggAACCCCAAAIIIIAAAggggAAC+SVAQJdfsrSLAAIIIIAAAggggAACCCCAAAIIIIBADAIEdDEgcQsCCCCAAAIIIIAAAggggAACCCCAAAL5JUBAl1+ytIsAAggggAACCCCAAAIIIIAAAggggEAMAgR0MSBxCwIIIIAAAggggAACCCCAAAIIIIAAAvklQECXX7K0iwACCCCAAAIIIIAAAggggAACCCCAQAwCBHQxIHELAggggAACCCCAAAIIIIAAAggggAAC+SVAQJdfsrSLAAIIIIAAAggggAACCCCAAAIIIIBADAIEdDEgcQsCCCCAAAIIIIAAAggggAACCCCAAAL5JUBAl1+ytIsAAggggAACCCCAAAIIIIAAAggggEAMAsaCnxbZ1U+qHsOt3IIAAggg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41vPOSeXgIAul6y+BAgQIECAAAECBAgQIECAAAECBBIEBHQJSEoIECBAgAABAgQIECBAgAABAgQI5BIQ0OWS1ZcAAQIECBAgQIAAAQIECBAgQIBAgoCALgFJCQECBAgQIECAAAECBAgQIECAAIFcAgK6XLL6EiBAgAABAgQIECBAgAABAgQIEEgQENAlICkhQIAAAQIECBAgQIAAAQIECBAgkEtAQJdLVl8CBAgQIECAAAECBAgQIECAAAECCQICugQkJQQIECBAgAABAgQIECBAgAABAgRyCQjocsnqS4AAAQIECBAgQIAAAQIECBAgQCBBQECXgKSEAAECBAgQIECAAAECBAgQIECAQC4BAV0uWX0JECBAgAABAgQIECBAgAABAgQIJAgI6BKQlBAgQIAAAQIECBAgQIAAAQIECBDIJSCgyyWrLwECBAgQIECAAAECBAgQIECAAIEEAQFdApISAgQIECBAgAABAgQIECBAgAABArkEBHS5ZPUlQIAAAQIECBAgQIAAAQIECBAgkCAgoEtAUkKAAAECBAgQIECAAAECBAgQIEAgl4CALpesvgQIECBAgAABAgQIECBAgAABAgQSBAR0CUhKCBAgQIAAAQIECBAgQIAAAQIECOQSENDlktWXAAECBAgQIECAAAECBAgQIECAQIKAgC4BSQkBAgQIECBAgAABAgQIECBAgACBXAICulyy+hIgQIAAAQIECBAgGJ7DzgAAIABJREFUQIAAAQIECBBIEBDQJSApIUCAAAECBAgQIECAAAECBAgQIJBLQECXS1ZfAgQIECBAgAABAgQIECBAgAABAgkCAroEJCUECBAgQIAAAQIECBAgQIAAAQIEcgkI6HLJ6kuAAAECBAgQIECAAAECBAgQIEAgQUBAl4CkhAABAgQIECBAgAABAgQIECBAgEAuAQFdLll9CRAgQIAAAQIECBAgQIAAAQIECCQICOgSkJQQIECAAAECBAgQIECAAAECBAgQyCUgoMslqy8BAgQIECBAgAABAgQIECBAgACBBAEBXQKSEgIECBAgQIAAAQIECBAgQIAAAQK5BAR0uWT1JUCAAAECBAgQIECAAAECBAgQIJAgIKBLQFJCgAABAgQIECBAgAABAgQIECBAIJeAgC6XrL4ECBAgQIAAAQIECBAgQIAAAQIEEgQEdAlISggQIECAAAECBAgQIECAAAECBAjkEhDQ5ZLVlwABAgQIECBAgAABAgQIECBAgECCgIAuAUkJAQIECBAgQIAAAQIECBAgQIAAgVwCArpcsvoSIECAAAECBAgQIECAAAECBAgQSBAQ0CUgKSFAgAABAgQIECBAgAABAgQIECCQS0BAl0tWXwIECBAgQIAAAQIECBAgQIAAAQIJAgK6BCQlBAgQIECAAAECBAgQIECAAAECBHIJCOhyyepLgAABAgQIECBAgAABAgQIECBAIEFAQJeApIQAAQIECBAgQIAAAQIECBAgQIBALgEBXS5ZfQkQIECAAAECBAgQIECAAAECBAgkCAjoEpCUECBAgAABAgQIECBAgAABAgQIEMglIKDLJasvAQIECBAgQIAAAQIECBAgQIAAgQQBAV0CkhICBAgQIECAAAECBAgQIECAAAECuQQEdLlk9SVAgAABAgQIECBAgAABAgQIECCQICCgS0BSQoAAAQIECBAgQIAAAQIECBAgQCCXgIAul6y+BAgQIECAAAECBAgQIECAAAECBBIEBHQJSEoIECBAgAABAgQIECBAgAABAgQI5BIQ0OWS1ZcAAQIECBAgQIAAAQIECBAgQIBAgoCALgFJCQECBAgQIECAAAECBAgQIECAAIFcAgK6XLL6EiBAgAABAgQIECBAgAABAgQIEEgQENAlICkhQIAAAQIECBAgQIAAAQIECBAgkEtAQJdLVl8CBAgQIECAAAECBAgQIECAAAECCQICugQkJQQIECBAgAABAgQIECBAgAABAgRyCQjocsnqS4AAAQIECBAgQIAAAQIECBAgQCBBQECXgKSEAAECBAgQIECAAAECBAgQIECAQC4BAV0uWX0JECBAgAABAgQIECBAgAABAgQIJAgI6BKQlBAgQIAAAQIECBAgQIAAAQIECBDIJSCgyyWrLwECBAgQIECAAAECBAgQIECAAIEEAQFdApISAgQIECBAgAABAgQIECBAgAABArkEBHS5ZPUlQIAAAQIECBAgQIAAAQIECBAgkCAgoEtAUkKAAAECBAgQIECAAAECBAgQIEAgl4CALpesvgQIECBAgAABAgQIECBAgAABAgQSBAR0CUhKCBAgQIAAAQIECBAgQIAAAQIECOQSENDlktWXAAECBAgQIECAAAECBAgQIECAQIKAgC4BSQkBAgQIECBAgAABAgQIECBAgACBXAICulyy+hIgQIAAAQIECBAgQIAAAQIECBBIEBDQJSApIUCAAAECBAgQIECAAAECBAgQIJBLQECXS1ZfAgQIECBAgAABAgQIECBAgAABAgkCAroEJCUECBAgQIAAAQIECBAgQIAAAQIEcgkI6HLJ6kuAAAECBAgQIECAAAECBAgQIEAgQUBAl4CkhAABAgQIECBAgAABAgQIECBAgEAuAQFdLll9CRAgQIAAAQIECBAgQIAAAQIECCQICOgSkJQQIECAAAECBAgQIECAAAECBAgQyCUgoMslqy8BAgQIECBAgAABAgQIECBAgACBBAEBXQKSEgIECBAgQIAAAQIECBAgQIAAAQK5BAR0uWT1JUCAAAECBAgQIECAAAECBAgQIJAgIKBLQFJCgAABAgQIECBAgAABAgQIECBAIJeAgC6XrL4ECBAgQIAAAQIECBAgQIAAAQIEEgQEdAlISggQIECAAAECBAgQIECAAAECBAjkEhDQ5ZLVlwABAgQIECBAgAABAgQIECBAgECCgIAuAUkJAQIECBAgQIAAAQIECBAgQIAAgVwCArpcsvoSIECAAAECBAgQIECAAAECBAgQSBAQ0CUgKSFAgAABAgQIECBAgAABAgQIECCQS0BAl0tWXwIECBAgQIAAAQIECBAgQIAAAQIJAgK6BCQlBAgQIECAAAECBAgQIECAAAECBHIJCOhyyepLgAABAgQIECBAgAABAgQIECBAIEFAQJeApIQAAQIECBAgQIAAAQIECBAgQIBALgEBXS5ZfQkQIECAAAECBAgQIECAAAECBAgkCAjoEpCUECBAgAABAgQIECBAgAABAgQIEMglIKDLJasvAQIECBAgQIAAAQIECBAgQIAAgQQBAV0CkhICBAgQIECAAAECBAgQIECAAAECuQQEdLlk9SVAgAABAgQIECBAgAABAgQIECCQICCgS0BSQoAAAQIECBAgQIAAAQIECBAgQCCXgIAul6y+BAgQIECAAAECBAgQIECAAAECBBIEBHQJSEoIECBAgAABAgQIECBAgAABAgQI5BIQ0OWS1ZcAAQIECBAgQIAAAQIECBAgQIBAgoCALgFJCQECBAgQIECAAAECBAgQIECAAIFcAgK6XLL6EiBAgAABAgQIECBAgAABAgQIEEgQENAlICkhQIAAAQIECBAgQIAAAQIECBAgkEtAQJdLVl8CBAgQIECAAAECBAgQIECAAAECCQICugQkJQQIECBAgAABAgQIECBAgAABAgRyCQjocsnqS4AAAQIECBAgQIAAAQIECBAgQCBBQECXgKSEAAECBAgQIECAAAECBAgQIECAQC4BAV0uWX0JECBAgAABAgQIECBAgAABAgQIJAgI6BKQlBAgQIAAAQIECBAgQIAAAQIECBDIJSCgyyWrLwECBAgQIECAAAECBAgQIECAAIEEAQFdApISAgQIECBAgAABAgQIECBAgAABArkEBHS5ZPUlQIAAAQIECBAgQIAAAQIECBAgkCAgoEtAUkKAAAECBAgQIECAAAECBAgQIEAgl4CALpesvgQIECBAgAABAgQIECBAgAABAgQSBAR0CUhKCBAgQIAAAQIECBAgQIAAAQIECOQSENDlktWXAAECBAgQIECAAAECBAgQIECAQIKAgC4BSQkBAgQIECBAgAABAgQIECBAgACBXAICulyy+hIgQIAAAQIECBAgQIAAAQIECBBIEBDQJSApIUCAAAECBAgQIECAAAECBAgQIJBLQECXS1ZfAgQIECBAgAABAgQIECBAgAABAgkCAroEJCUECBAgQIAAAQIECBAgQIAAAQIEcgkI6HLJ6kuAAAECBAgQIECAAAECBAgQIEAgQUBAl4CkhAABAgQIECBAgAABAgQIECBAgEAuAQFdLll9CRAgQIAAAQIECBAgQIAAAQIECCQICOgSkJQQIECAAAECBAgQIECAAAECBAgQyCUgoMslqy8BAgQIECBAgAABAgQIECBAgACBBAEBXQKSEgIECBAgQIAAAQIECBAgQIAAAQK5BAR0uWT1JUCAAAECBAgQIECAAAECBAgQIJAgIKBLQFJCgAABAgQIECBAgAABAgQIECBAIJeAgC6XrL4ECBAgQIAAAQIECBAgQIAAAQIEEgQEdAlISggQIECAAAECBAgQIECAAAECBAjkEhDQ5ZLVlwABAgQIECBAgAABAgQIECBAgECCgIAuAUkJAQIECBAgQIAAAQIECBAgQIAAgVwCArpcsvoSIECAAAECBAgQIECAAAECBAgQSBAQ0CUgKSFAgAABAgQIECBAgAABAgQIECCQS0BAl0tWXwIECBAgQIAAAQIECBAgQIAAAQIJAgK6BCQlBAgQIECAAAECBAgQIECAAAECBHIJCOhyyepLgAABAgQIECBAgAABAgQIECBAIEFAQJeApIQAAQIECBAgQIAAAQIECBAgQIBALgEBXS5ZfQkQIECAAAECBAgQIECAAAECBAgkCAjoEpCUECBAgAABAgQIECBAgAABAgQIEMglIKDLJasvAQIECBAgQIAAAQIECBAgQIAAgQQBAV0CkhICBAgQIECAAAECBAgQIECAAAECuQQEdLlk9SVAgAABAgQIECBAgAABAgQIECCQICCgS0BSQoAAAQIECBAgQIAAAQIECBAgQCCXgIAul6y+BAgQIECAAAECBAgQIECAAAECBBIEBHQJSEoIECBAgAABAgQIECBAgAABAgQI5BIQ0OWS1ZcAAQIECBAgQIAAAQIECBAgQIBAgoCALgFJCQECBAgQIECAAAECBAgQIECAAIFcAgK6XLL6EiBAgAABAgQIECBAgAABAgQIEEgQENAlICkhQIAAAQIECBAgQIAAAQIECBAgkEtAQJdLVl8CBAgQIECAAAECBAgQIECAAAECCQICugQkJQQIECBAgAABAgQIECBAgAABAgRyCQjocsnqS4AAAQIECBAgQIAAAQIECBAgQCBBQECXgKSEAAECBAgQIECAAAECBAgQIECAQC4BAV0uWX0JECBAgAABAgQIECBAgAABAgQIJAgI6BKQlBAgQIAAAQIECBAgQIAAAQIECBDIJSCgyyWrLwECBAgQIECAAAECBAgQIECAAIEEAQFdApISAgQIECBAgAABAgQIECBAgAABArkEBHS5ZPUlQIAAAQIECBAgQIAAAQIECBAgkCAgoEtAUkKAAAECBAgQIECAAAECBAgQIEAgl4CALpesvgQIECBAgAABAgQIECBAgAABAgQSBAR0CUhKCBAgQIAAAQIECBAgQIAAAQIECOQSENDlktWXAAECBAgQIECAAAECBAgQIECAQIKAgC4BSQkBAgQIECBAgAABAgQIECBAgACBXAICulyy+hIgQIAAAQIECBAgQIAAAQIECBBIEBDQJSApIUCAAAECBAgQIECAAAECBAgQIJBLQECXS1ZfAgQIECBAgAABAgQIECBAgAABAgkCAroEJCUECBAgQIAAAQIECBAgQIAAAQIEcgkI6HLJ6kuAAAECBAgQIECAAAECBAgQIEAgQUBAl4CkhAABAgQIECBAgAABAgQIECBAgEAuAQFdLll9CRAgQIAAAQIECBAgQIAAAQIECCQICOgSkJQQIECAAAECBAgQIECAAAECBAgQyCUgoMslqy8BAgQIECBAgAABAgQIECBAgACBBAEBXQKSEgIECBAgQIAAAQIECBAgQIAAAQK5BAR0uWT1JUCAAAECBAgQIECAAAECBAgQIJAgIKBLQFJCgAABAgQIECBAgAABAgQIECBAIJeAgC6XrL4ECBAgQIAAAQIECBAgQIAAAQIEEgQEdAlISggQIECAAAECBAgQIECAAAECBAjkEhDQ5ZLVlwABAgQIECBAgAABAgQIECBAgECCgIAuAUkJAQIECBAgQIAAAQIECBAgQIAAgVwCArpcsvoSIECAAAECBAgQIECAAAECBAgQSBAQ0CUgKSFAgAABAgQIECBAgAABAgQIECCQS0BAl0tWXwIECBAgQIAAAQIECBAgQIAAAQIJAgK6BCQlBAgQIECAAAECBAgQIECAAAECBHIJCOhyyepLgAABAgQIECBAgAABAgQIECBAIEFAQJeApIQAAQIECBAgQIAAAQIECBAgQIBALgEBXS5ZfQkQIECAAAECBAgQIECAAAECBAgkCAjoEpCUECBAgAABAgQIECBAgAABAgQIEMglIKDLJasvAQIECBAgQIAAAQIECBAgQIAAgQQBAV0CkhICBAgQIECAAAECBAgQIECAAAECuQQEdLlk9SVAgAABAgQIECBAgAABAgQIECCQICCgS0BSQoAAAQIECBAgQIAAAQIECBAgQCCXgIAul6y+BAgQIECAAAECBAgQIECAAAECBBIEBHQJSEoIECBAgAABAgQIECBAgAABAgQI5BIQ0OWS1ZcAAQIECBAgQIAAAQIECBAgQIBAgoCALgFJCQECBAgQIECAAAECBAgQIECAAIFcAgK6XLL6EiBAgAABAgQIECBAgAABAgQIEEgQENAlICkhQIAAAQIECBAgQIAAAQIECBAgkEtAQJdLVl8CBAgQIECAAAECBAgQIECAAAECCQICugQkJQQIECBAgAABAgQIECBAgAABAgRyCQjocsnqS4AAAQIECBAgQIAAAQIECBAgQCBBQECXgKSEAAECBAgQIECAAAECBAgQIECAQC4BAV0uWX0JECBAgAABAgQIECBAgAABAgQIJAgI6BKQlBAgQIAAAQIECBAgQIAAAQIECBDIJSCgyyWrLwECBAgQIECAAAECBAgQIECAAIEEAQFdApISAgQIECBAgAABAgQIECBAgAABArkEBHS5ZPUlQIAAAQIECBAgQIAAAQIECBAgkCAgoEtAUkKAAAECBAgQIECAAAECBAgQIEAgl4CALpesvgQIECBAgAABAgQIECBAgAABAgQSBAR0CUhKCBAgQIAAAQIECBAgQIAAAQIECOQS2CMCujfeeifq6upyGepLgAABAgQIECBAgAABAgQIECBAYMACe0RA9+bvt8YhB/3HASP5IQECBAgQIECAAAECBAgQIECAAIFcAntMQDfi4D/LZagvAQIECBAgQIAAAQIECBAgQIAAgQELCOgGTOeHBAgQIECAAAECBAgQIECAAAECBAYvIKAbvKEOBAgQIECAAAECBAgQIECAAAECBAYsIKAbMJ0fEiBAgAABAgQIECBAgAABAgQIEBi8gIBu8IY6ECBAgAABAgQIECBAgAABAgQIEBiwgIBuwHR+SIAAAQIECBAgQIAAAQIECBAgQGDwAgK6wRvqQIAAAQIECBAgQIAAAQIECBAgQGDAAgK6AdP5IQECBAgQIECAAAECBAgQIECAAIHBCwjoBm+oAwECBAgQIECAAAECBAgQIECAAIEBCwjoBkznhwQIECBAgAABAgQIECBAgAABAgQGLyCgG7yhDgQIECBAgAABAgQIECBAgAABAgQGLCCgGzCdHxIgQIAAAQIECBAgQIAAAQIECBAYvICAbvCGOhAgQIAAAQIECBAgQIAAAQIECBAYsICAbsB0fkiAAAECBAgQIECAAAECBAgQIEBg8AICusEb6kCAAAECBAgQIECAAAECBAgQIEBgwAICugHT+SEBAgQIECBAgAABAgQIECBAgACBwQsI6AZvqAMBAgQIECBAgAABAgQIECBAgACBAQsI6AZM54cECBAgQIAAAQIECBAgQIAAAQIEBi8goBu8oQ4ECBAgQIAAAQIECBAgQIAAAQIEBiwgoBswXcIP29uidfO6WLJkbfy2R3ldfWOMGHNlTD374M7/0t7WGpufuCvufu6kmHrVWdH1XxKe1WtJe7S1bo4nl94Tz57c/VkD7RjRHqWWjbFy3qPRMGFOjBs58E79/7Iy/nWLl8aa1yrVdQ2NcWL25+5gZNX5XHrXUzHijzWGYmjtpWjZ+FB8dd0R79E66fm+A5vjYv1uefKeeHLElTFuZI611/+KSVufA3u/lKerIUCAAAECBAgQIECAAAECAxEQ0A1ELfU3RaCzaXXMX/BEHDJhdk2Y1RatLc/GQ7f873jp1Akx5+KulKutZVs0lRpj2LDGqEt9zg7ripDk1Xh8/qLYcOrMmDnmkEF3rDQoRfO7zRF77R17NbxHLbdrUw3nltwZa1rPiM9deVYc3NYaLc+ujJv/1ytx2sTZUcOWaxDd+9bM52GX3RaTj39/HtvtKR2h76JV8erwC+Laa8+L92pWu57TFqWW9XH/9SuiIfU9O8a1eHUMn3hr1aYtWrY1RalxWAxrHPxqTtNOHfv7sYbTRqyKAAECBAgQIECAAAECBAgI6HKugb4CnfaW+MOLq2LxPT+Kv5gyN9OXaLkCupxo1d7lwOeJWLTwmTjh6mti7BGVwLKteWv82/03xXfe+VTMuOa9+MpwJ97ljxzQlb+wXLsklqzZFNua26PhsI/vWgFdNYz+o4WX5alMDeh2Yt6VEiBAgAABAgQIECBAgACBzAICupzA/QQ6bS3vxo/vmx3froZNB/Xc4lreyrgi5qz4WWWUdfXReOiY6rbGjm16j0R85qJoW7EyiqruW2d7Ceh62XZbu220rdQSG1fOi0df73hO8eDKs1bMfTTeGHNFfOH0LV1bXI8txrgy5j0ccdFn2mNldazbbUXt8dy6+voYefY58dpTfWwXbWuNpqZSNAwbGh0fYLWXWuPlVfNj8bMf7j2cKpsljKf6TsvnVNwi6qJhyAkxfs64OK5jTfQ25jNHxyurn4jaEKpstuKmWPlcpU9944gYe9WVcdZBHWFjX/OYtgCLcG7T2iWxdO2W+NDfXh/HrZ8Xj77RT0BX3Qo7d82hce7Ba2PNz7rWz/A+x9xLyNXXuimvgeUxZ9mG2NbUGvXD9ot9Tx4fX/n0/j22V1fW0Y7Ne1/TUdcQQ0aN7/rStM+/i46xL4uYODkaH67Ob7ce3be4XnxMZWv5XRtPiIuOXx8rnyg2pG+/HrrPc8+/tbR5VEWAAAECBAgQIECAAAECBHoTENDlXBf9BHTlsOmx22PRU0fGZbdNjOPaWuPVVQvjjo2nxrUzz44DNq6IeSt/E6M/9/k466D2KLVuiifv/Pv417+cFDddfEx5G+K9X74/nt973zjhwuviomNL0br5ybjzG/8a+318alx59kHdt7ief1D5TLyld66NA/52VnxmZHGcWWtseuLO+MaP/kN8ctoVceaBpdj2k/8RNz6yNT517TVxdhEyFYHIhgfjhgd+G2NmTIvzhm/o2v44shQt6++LL9//fOzzwTFx+eWjY3hrS2x8aF58+8WPxJR5F8fIjrPbOp5bHedd93wvftsWMSp1G2UUgeOmWLtwUaw+dGLcNvnE7bcBtyWOZ8u6WLJ0bfzmQ5+OGy8eGW3lMd8S//DSqTFxTs2Yl66N1jMujyvOHh6lYlvyzd+Kn9WMuSPQXLnxr+LTN46L44rnP7sybv2Hl+OUS2bHxeXwqq95TD/Er7z9ubW9fA7fz5bNiuWv9RPQdVg8+ELsfdKFccOFIyPqhsReQ9rj2ZXzYodjHtkjoDuucpZin+tm/3fj7V+vjaV3fS9GFNu5TxgSQ+u3dG2vLtZef+bVr9/u/fID8fw+H4yxn/tvMfrA1nLgOvc7v46PXjo3wbPj76KPHj3eb9LI4u/u9rj98bdinyPOjcs/f0Z1DXeth2OqwfVDm0bH5VecFQe3V/7W7vq7f4u/mDzn/d9unfP/W3oTIECAAAECBAgQIECAwPsuIKDLSd7flsi2UjQ/c1/MWtkYU742OY6vCehmzjgrSqsXxoK1h8Tk2y6NUeUjvNqitakpWur2ir33qqsEdNcti+dPnBDzJp1SPg+uvXVbvPhPi+Luf/lgTLl5XBxbcwbdjPMOjE1rFscdzxwfV8+4II4ozo9rL0Xzy4/F/EXfiw989taYeFxblLY9Hd+88ZF4+xMzYtq5B0cRQm1YdmM8uPn8mH7t+XFIa835ZNWA7rplv4sLrqluRW0vRdOvvxsLl/4gPvDZm2P80S2xYcWcWN56UcztNs6FsfSpN+Ok1ICuHBQuixsffDZGTrw5pozq5QC8aijV73iWz45lm86JqdecHx8oH6TXFs1bfxz3z/lObP3U9Jh6xv6xoVpz1fSxcWTxCV9bc2z98X0x++EXKmOuBleL7lgVB46bG5NP2SvKnWq24U6/6vRo7XMed/4Qv2I+fnp/ekBXtpg2LS44vFgglbCtrzHPuOaMOLDmDLoiwOp33YzsOm+x8nVh9683p597QKfnjsyvLoeg6+O+65bH62OuimkfOzIa69qj1PTv8d0Fd8b3//yzcfO4o2JTwt9FXz1umVAJ8TrO2CsHdI/NjwVPNHSt4W7rYVpMHd0aa+YvjMcPm9wVDJe/8GyJuqxnMeb8H5TeBAgQIECAAAECBAgQILCrCAjocs5EQkDXsv7+uH55w3YBXfEF3f4vr4rbFzwRb++3T5y03a2hXV851U2uCavKgduqWLD45/E3X5oWZ+3f/ZKIttamaCo1xNAhEVvWLo0lxXa+tpZobq3r/JKtrbQtfvLNr8Qjv/9kzJx+VhzYsiEevOHB+M1502Lmxw6NttoLBMoBXfEO9V1BYrf3vjUuObr6+zHT49qxIyrincHgU3FESkBXDZYWL1odm4+9uDOQ3G76ygFd3+OZeMym7cOWIljrfO9PxPSrjo71C+6In44q3vmwypd6xRheWRVfv2Ndeczl4OrxRXHHmuFxyS1T4qSOrK2tFNue/mbc+PCwuOzW8XFUn/O48wtw5wK67hblrbL9jfm2CXFsj0si+l03RVjZ7Qy62oBuRkw/p9SPebHWzuwMBusvvTUuPbFQr/RZffsdsfaIKfG1iceW13fK38UOe0wauX1AV3y5uuGkmH7t2Disep9FeT3c+5V4ZNhlceu4D8VL350fC9e9HfvtO6r7Vuidn0K/IECAAAECBAgQIECAAAEC3QQEdDkXRH9bXIuwpPw10KHbB3TF7ZzFF1vvPB3L5zwUzw/dO/aqr4uGxsNi7FVXxJkH7eAw/PIzH48FCzfGaV+cHuccUBPQdWwzXLw2ilO2ipDsqAtnxYUHPFnemtgZlJW/gHssFt71f+M/zZwap2/q2N46I8aOKM7v6vkFXVfIeEJHkNUZ1twSlxy9Pu67fnn87mM1N8n2F17Wzkvn+WdrYvPRF8bsCSfF3ju6PrYzoKuEntuP59aYeEzFZP0pNYFhOaDr+DLtYzHtmoNi9axl8doLSA+2AAAKRElEQVQFtbfftkWp+Zm4b9ZD0VgN6F597Pa4ffXrsdfela/nOv8ptURz+wmVMfQ5jzu/AHc+oOuyKAK6/sc8MUbWznERvhXbU/taN/0GdK39mBfbdc+J4dvdHtsjoJt0fOVLxp36u+jZYwcBXbG1vOZW3LLzA7NiRcOU+Nqk48tfRr7z9PKYs/IXlfmua4jGEWNi6tQz4+Cdn0a/IECAAAECBAgQIECAAAECnQICupyLob9LIkotsf7BG2N5XBK3XDoq6mvPoOsMCkrR/G5zlDouapjzSPxyv9Ni0tzPxDHbhRnllClaNjwQsx58PT7eI6Cr3WZ4ZTVUaNhraNRvWR3zF9RefNAepeaXYtWCu+Lnp10V521aVN3eWnxd1CMY7PyCbkeB2CADuo4v55asiS1HXxSzJ4zacThXzGViQFd8kfXEBy6L2y7pvBKiEtAVgUz9pLh5woGx5uuLY+OHe4SKm9fEgvlrYkRnQLcgFq47OCbMGRfbnybXUBPc7Wgeay6lSFyLgw/o+htzY0TN2pp4bEvn9tQdrpuEgK5v82Lr6PHdv848vpz2dv+Crgjoyv/szN/FQAK6ynmH5W2th1cCuspjm+Pd5lLlXMbiApeHfxX7fWRSzL04/SzBxGlWRoAAAQIECBAgQIAAAQJ7kICALudk9xXQ1ZwFNvySyhbV8tdNHZdE1HzJ0znE9pb4w4urY/Fdz8fffOmaOPPPKmfQvXDaZ+OWCZWAoLKF8Y5Y+NNRMf3aMXFoqeMLuuo2wx7bNiv1C2PB6te6XdbQXmqOl767MBY/d1icGBvjN51bPXc2oLstJh7btVWwIxDb0XO7TcfOhnNJAV0xnuZ4+r4bYuUbn4gvzjin+vVT8WVg11bc4ry+oubhN4utl2dXasrh5/1x/QM/r1iNLM4QvDdmrXgrPvml6XFO9dbW4t2KW0Hvfu6k6o27PRZZt3ns+l3qUhxMQFe8Q/9jrj2DrvjicFOs6W/d9BnQzYzp5+7fr/m1Yw/p/nVmnwFdjVYvfxcd58tN7rVHb1/QFdtXh3ZdjFK+sKJYD8ujfQfnHba3/CF+9diSuPsXH61ZR6mzqI4AAQIECBAgQIAAAQIECHQJCOhyroYdBnRFGLQxVsxZERuOvjDmTjq1csFDj0si2tbeFXf/86ExvrhVtLoFc+OK2bHs1XPjmuplDcUtrs8N3bd6w2XlAoAli1fH/hfPiyknN0R7zSUR5ZDk3lnx0C9Pi8u+Or7zdtVFC/8xXmlriCP/87Ux/bzqZr3qGXG3L3wy3hxySIyZVmxvLQ7n2vmAbvJx1Usj7v5R/GX5Js7qRQUL/yk2tY+Ij8+cGecf2nMiuhv1ua219qf9fkFXXO5QGc/8JT+IbR8pbsQdWf56buOKObFs/VEx7uYpcUpDW7lmwdIfxr6fvCauOvugypzdeH88XarvvNii40KI//nrD8fkm7puf+2Yg0tHFWf99TWPXWeepS7FQQV0NZdY7GjMU06u7/YlWznQ7G/dnDu8jzPoZsbM84f3b97YY/t0L+HabZccE5sT/i52OqArtio//rvY+88/FdOuPjOGl29tvSmWv3JWTJ0xNg5r3xzrlt4TTx02LuaUv5arrM/lX1kWm8+5uuucwtRJVEeAAAECBAgQIECAAAECBGoEBHQ5l0M1oPv611fF6z1veqyvi+GjL48vnHd455bNnl/QHdS0NV5cdWf89395q3q+WV1E+4fiwtkT45ShlRDlvusejC1nnxOHfv+H8UJDRF1dxNEXzorxo/aOvRq636Q5c8zB0fKHX8WqhXfH97ZWzkyrrx8eo//r6Hh56SPxwqm1Wz4r21wfu31xrGu8oObw/AEEdEXQ0tYUW//98Vh6zw/jrYaI+rrhcfp/OSbWP/Lz+MgXZ0RHLtgxHeUv7NYuigX/+EqUGopba2tPeKuLhiEn9H5Qf0pAVx5Pc2zd+kwsn/vt+FW5d33UHXhGfO6Kc+LwjvPkqmNefPf34+3G+qirb4+//ujpseWpmvP6IqLl3bfjJ8vmxbd/WTHtPgfFq/c1j43RXoRBD301vtUwvhr+9L0oBxvQFd37HnPP8w3bk9ZNW8u78ePiq8MX9o19Dh8TV3zhr+On8xfFhlOr24T7Ne/tXMXtt7j27dk9XEz+gu6xBbFgzYFx7rlvxj//4I2o71gPU8+LI4c2Rl20RdPWF+PxJd+IH/y+uhaLP8ejLozZE0+OoY1RDuxWzns0Gra70CXn/2T0JkCAAAECBAgQIECAAIE/BQEBXe5ZbGuNpqaWaOvlOfVDhsXQxuqVkdX/3nFb5rByKFBcsNoUTa21v+4416wSZlQuX5gWV43eP0rVHg3dwsC2aG1qilJDx7PaonVbU7S0dwyoPoYMbYy2puYeQVhli98Ds5bFb8+vucm0/LPK+V/R8ZzyuVzFv9ZclFB977rasdRatLdH/OKRmLM8YuJtl8ao7gzlp2z/7rWItee79cBNHU/nOWbV39cPiQ73zo495q+hcUi0t7ZEt/cqH032bhRHk3X8030O+prH8ptG87tPx/JHh8WUzjPW+l6Y5ee19zLenj/rzaJa0/eYe8xxpK2bzp71Q2JoESJ3W3tda6eTajvzns+t+BRruKWuK6jd8d9FL+uzspp69Oh6zpC64uKM4ly+ETH5qxfHUR1/b9uNradBRHQLj3sbe+7/wehPgAABAgQIECBAgAABAn8KAgK63XYWawO62ptG36MXKg7B37AsbnywVNny2SNITH9K8QXU5li35O54srHjxsvKAfzrFi2Ox4aPj1umnNT9BtT05n8ale2laH1uZSx+9byYPnbEn8Y77UZvUbnZthLQdd78uxuN31AJECBAgAABAgQIECBAYPcXENDttnOYKaCrXsywZMnaeL1ueJz5+Svj/CNrvowbkFcptr3zf+KBOd+K/ze0MeqLHsU+0GM+HTeM6+dW1gE9b/f6UVupNZ5buTg2nTetes7f7jX+3X20ArrdfQaNnwABAgQIECBAgAABAru/gIBut57Dypa69l62yg7qtTq3ddbHkGFDY8Afz3UbRGWsNbtAe2wPHNSId/sfl5qbon3Ie2W923O87y9Q2TJb132b9vs+Cg8kQIAAAQIECBAgQIAAgT1VQEC3p8689yZAgAABAgQIECBAgAABAgQIENglBAR0u8Q0GAQBAgQIECBAgAABAgQIECBAgMCeKiCg21Nn3nsTIECAAAECBAgQIECAAAECBAjsEgICul1iGgyCAAECBAgQIECAAAECBAgQIEBgTxUQ0O2pM++9CRAgQIAAAQIECBAgQIAAAQIEdgkBAd0uMQ0GQYAAAQIECBAgQIAAAQIECBAgsKcKCOj21Jn33gQIECBAgAABAgQIECBAgAABAruEgIBul5gGgyBAgAABAgQIECBAgAABAgQIENhTBQR0e+rMe28CBAgQIECAAAECBAgQIECAAIFdQkBAt0tMg0EQIECAAAECBAgQIECAAAECBAjsqQL/H+mxAOIZ5eJ6AAAAAElFTkSuQmCC" alt="" width="1256" height="638">

查询及更新

知道了节点的标签和一条属性,就可以通过findNode()方法查询节点。

然后使用setProperty()方法来更新和添加属性。

Neo4j学习笔记(1)——使用Java API实现简单的增删改查
try (Transaction tx = graphDb.beginTx()) {
// 查询节点
Label label = Label.label("Musician");
Node node = graphDb.findNode(label, "name", "Jay Chou");
System.out.println("query node name is " + node.getProperty("name"));
// 更新节点
node.setProperty("birthday", "1979-01-18");
System.out.println(node.getProperty("name") + "'s birthday is " + node.getProperty("birthday", new String()));
// 提交事务
tx.success();
}
Neo4j学习笔记(1)——使用Java API实现简单的增删改查

打开Neo4j查看结果:

aaarticlea/png;base64,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" alt="" width="1075" height="49">

删除关系和节点

删除数据时,只需要执行相关实体对应的delete()方法即可。

执行删除操作时,需要遵守如下规则:删除节点时,如果该节点存在关系,则必须先删除关系。这么做的目的是保证一条关系永远有起始和结束节点。

Neo4j学习笔记(1)——使用Java API实现简单的增删改查
try (Transaction tx = graphDb.beginTx()) {
// 获得节点
Label label = Label.label("Album");
Node node = graphDb.findNode(label, "name", "Fantasy");
// 获得关系
Relationship relationship = node.getSingleRelationship(RelTypes.Released, Direction.INCOMING);
// 删除关系和节点
relationship.delete();
relationship.getStartNode().delete();
node.delete();
tx.success();
}
Neo4j学习笔记(1)——使用Java API实现简单的增删改查

完整代码

Neo4j学习笔记(1)——使用Java API实现简单的增删改查
 package edu.heu.kg.graphdb;

 import java.io.File;

 import org.neo4j.graphdb.Direction;
import org.neo4j.graphdb.GraphDatabaseService;
import org.neo4j.graphdb.Label;
import org.neo4j.graphdb.Node;
import org.neo4j.graphdb.Relationship;
import org.neo4j.graphdb.RelationshipType;
import org.neo4j.graphdb.Transaction;
import org.neo4j.graphdb.factory.GraphDatabaseFactory; /**
* @ClassName: GraphDatabaseHelloWorld
* @Description: TODO
* @author LJH
* @date 2017年12月22日 下午4:09:33
*/
public class GraphDatabaseHelloWorld { private static final File DB_PATH = new File("D:\\Neo4jDb");
private static GraphDatabaseService graphDb; private static void registerShutdownHook(final GraphDatabaseService graphDb) {
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
graphDb.shutdown();
}
});
} private static enum RelTypes implements RelationshipType {
RELEASED;
} @SuppressWarnings("unused")
private static void addData() {
Node node1;
Node node2;
Label label1;
Label label2;
Relationship relationship; try (Transaction tx = graphDb.beginTx()) {
// 创建标签
label1 = Label.label("Musician");
label2 = Label.label("Album");
// 创建节点
node1 = graphDb.createNode(label1);
node1.setProperty("name", "Jay Chou");
node2 = graphDb.createNode(label2);
node2.setProperty("name", "Fantasy");
// 创建关系及属性
relationship = node1.createRelationshipTo(node2, RelTypes.Released);
relationship.setProperty("date", "2001-09-14");
// 结果输出
System.out.println("created node name is " + node1.getProperty("name"));
System.out.println(relationship.getProperty("date"));
System.out.println("created node name is " + node2.getProperty("name"));
// 提交事务
tx.success();
}
graphDb.shutdown();
} @SuppressWarnings("unused")
private static void queryAndUpdate() {
try (Transaction tx = graphDb.beginTx()) {
// 查询节点
Label label = Label.label("Musician");
Node node = graphDb.findNode(label, "name", "Jay Chou");
System.out.println("query node name is " + node.getProperty("name"));
// 更新节点
node.setProperty("birthday", "1979-01-18");
System.out
.println(node.getProperty("name") + "'s birthday is " + node.getProperty("birthday", new String()));
// 提交事务
tx.success();
}
graphDb.shutdown();
} @SuppressWarnings("unused")
private static void delete() {
try (Transaction tx = graphDb.beginTx()) {
// 获得节点
Label label = Label.label("Album");
Node node = graphDb.findNode(label, "name", "Fantasy");
// 获得关系
Relationship relationship = node.getSingleRelationship(RelTypes.RELEASED, Direction.INCOMING);
// 删除关系和节点
relationship.delete();
relationship.getStartNode().delete();
node.delete();
tx.success();
}
graphDb.shutdown();
} public static void main(String[] args) {
graphDb = new GraphDatabaseFactory().newEmbeddedDatabase(DB_PATH);
registerShutdownHook(graphDb);
addData();
// queryAndUpdate();
// delete(); } }
Neo4j学习笔记(1)——使用Java API实现简单的增删改查

转载请注明原文链接:http://www.cnblogs.com/justcooooode/p/8179202.html

参考资料

https://neo4j.com/docs/java-reference/3.2

《Neo4j 实战》

上一篇:真香!Python十大常用文件操作,轻松办公


下一篇:Mybatis学习--Java API