Neo4j的Java嵌入式开发

2021-04-11 05:27

阅读:686

标签:org   高级   sage   标准   public   img   exception   操作   hda   

Neo4j开发入门

Java嵌入式开发模式

  • Java开发人员完全可以直接在代码中调用Neo4j的API,并将对Neo4j数据库的操作嵌入在Java代码中。
  • 面向Java开发人员:

技术图片

各语言驱动开发模式

  • 其他开发语言如.NET、JavaScript、Python、PHP等也希望能够和Neo4j相互集成,就像操作传统的关系型数据库那样熟练的操作Neo4j这个图数据库。

  • Java Driver:面向Java开发人员。

  • .net Driver:面向.net开发人员。

  • JavaScript Driver:面向前端开发人员。

  • Python Driver:面向Python开发人员。

Neo4j HTTP API

  • 通过标准的HTTP协议(POST、GET、PUT、DELETE)操作Neo4j数据库。
  • 各语言驱动开发模式就是其它开发平台、语言通过它们专门基于HTTP的HTTP API的驱动包或驱动库就可以和Neo4j相互对话。

三种开发模式的结构

技术图片

Java API嵌入式开发

准备工作

各版本的依赖库及其名称

  • 由于Neo4j分为社区版和企业版。首先需要确定对应的版本和名称,下面概述了用于依赖管理工具的可用版本及其名称。
版本 依赖库 描述
Neo4j社区版 org.neo4j:neo4j 社区版,有完全的ACID事务
Neo4j企业版 org.neo4j:neo4j-enterprise 企业版,添加高级监控,在线备份和高可用功能集群

导入Neo4j的jar包的Maven坐标

  • pom.xml

org.neo4j
    neo4j
    3.4.18junit
    junit
    4.13test

启动和关闭数据库

  • 示例:
package com.sunxiaping.neo4j;

import org.junit.Before;
import org.junit.Test;
import org.neo4j.graphdb.GraphDatabaseService;
import org.neo4j.graphdb.Transaction;
import org.neo4j.graphdb.factory.GraphDatabaseFactory;

import java.io.File;

public class EmbeddedNeo4jTest {

    GraphDatabaseService graphDb = null;

    @Before
    public void before() {
        //数据库文件的目录地址
        String storeDir = "D:\\develop\\Neo4j Desktop\\data\\neo4jDatabases\\database-420aa183-f1e8-44e5-b34e-dbe6190064f7\\installation-3.4.18\\data\\databases\\graph.db";
        //创建GraphDatabaseService实例,这代表是数据库的实例
        graphDb = new GraphDatabaseFactory().newEmbeddedDatabase(new File(storeDir));
        Transaction transaction = graphDb.beginTx();
    }

    @Test
    public void after() {
        //关闭数据库
        if (null != graphDb) {
            graphDb.shutdown();
        }
    }


    /**
     * 连接数据库
     */
    @Test
    public void connectDb() {
        System.out.println("连接数据库..." + graphDb);
    }

}

操作Neo4j的应用示例

  • 示例:基本操作
package com.sunxiaping.neo4j;

import org.junit.Before;
import org.junit.Test;
import org.neo4j.graphdb.*;
import org.neo4j.graphdb.factory.GraphDatabaseFactory;
import org.neo4j.io.fs.FileUtils;

import java.io.File;
import java.io.IOException;
import java.util.Map;

public class EmbeddedNeo4jTest {

    GraphDatabaseService graphDb = null;
    Transaction transaction = null;
    String storeDir = null;

    @Before
    public void before() {
        //数据库文件的目录地址
        storeDir = "D:\\develop\\neo4j-community-3.5.19\\data\\databases\\graph.db";
        //创建GraphDatabaseService实例,这代表是数据库的实例
        graphDb = new GraphDatabaseFactory().newEmbeddedDatabase(new File(storeDir));
        transaction = graphDb.beginTx();
    }

    @Test
    public void after() {
        //关闭数据库
        if (null != graphDb) {
            graphDb.shutdown();
        }
    }

    /**
     * 通过删除数据库文件的方式创建数据库
     */
    @Test
    public void deleteDb() throws IOException {
        FileUtils.deleteRecursively(new File(storeDir));
    }

    /**
     * 新增节点和关系
     */
    @Test
    public void createDataTest() {
        try {
            //创建节点
            Node firstNode = graphDb.createNode();
            firstNode.setProperty("Spring Festival", "春节");
            firstNode.setProperty("Peking Opera", "京剧");
            firstNode.setProperty("Dumpling", "饺子");
            firstNode.addLabel(Label.label("China"));

            //创建节点
            Node secondNode = graphDb.createNode();
            secondNode.setProperty("generous", "慷慨");
            secondNode.setProperty("be ready to help others", "乐于助人");
            secondNode.setProperty("Hospitality", "热情好客");
            secondNode.addLabel(Label.label("Person"));
            secondNode.addLabel(Label.label("Chinese"));

            //创建关系
            Relationship relationship = firstNode.createRelationshipTo(secondNode, RelationshipType.withName("CountryPeople"));
            relationship.setProperty("message", "国家和人");

            System.out.println("============firstNode===========");
            Object spring_festival = firstNode.getProperty("Spring Festival");
            System.out.println("spring_festival = " + spring_festival);
            Object peking_opera = firstNode.getProperty("Peking Opera");
            System.out.println("peking_opera = " + peking_opera);
            Object dumpling = firstNode.getProperty("Dumpling");
            System.out.println("dumpling = " + dumpling);

            Map allProperties = firstNode.getAllProperties();
            System.out.println("allProperties = " + allProperties);
            Iterable

Neo4j的Java嵌入式开发

标签:org   高级   sage   标准   public   img   exception   操作   hda   

原文地址:https://www.cnblogs.com/xuweiweiwoaini/p/13362100.html


评论


亲,登录后才可以留言!