将 Neo4j 嵌入您的 Java 应用程序

在为您的平台选择合适的版本后,您可以通过在构建中包含 Neo4j 库 JAR 文件来将 Neo4j 嵌入您的 Java 应用程序。以下部分将展示如何通过直接更改构建路径或使用依赖管理来完成此操作。

添加 Neo4j 作为依赖

您可以选择使用顶级构件或直接包含各个组件。以下示例使用顶级构件方法。

[企业版]

这些示例仅适用于 Neo4j 社区版。要将 Neo4j 企业版添加为依赖,请联系 Neo4j 专业服务。有关社区版和企业版的详细信息,请参阅 操作手册 → 简介

Maven

按照以下代码片段的格式将依赖添加到您的项目中。这通常在项目根目录中的 pom.xml 文件中完成。

<project>
...
 <dependencies>
  <dependency>
   <groupId>org.neo4j</groupId>
   <artifactId>neo4j</artifactId>
   <version>2025.05.0</version>
  </dependency>
  ...
 </dependencies>
...
</project>

其中 artifactId 可以在版本表中找到。

Eclipse 和 Maven

对于在 Eclipse 中的开发,建议安装 m2e 插件,并让 Maven 管理项目构建类路径。这还增加了通过 Maven 命令行构建项目以及拥有一个可用的 Eclipse 开发环境的可能性。

Ivy

确保从 Maven Central 解析依赖项。您可以在 ivysettings.xml 文件中使用此配置

<ivysettings>
  <settings defaultResolver="main"/>
  <resolvers>
    <chain name="main">
      <filesystem name="local">
        <artifact pattern="${ivy.settings.dir}/repository/[artifact]-[revision].[ext]" />
      </filesystem>
      <ibiblio name="maven_central" root="http://repo1.maven.org/maven2/" m2compatible="true"/>
    </chain>
  </resolvers>
</ivysettings>

完成上述设置后,通过将以下依赖项添加到您的 ivy.xml 文件来添加 Neo4j

..
<dependencies>
  ..
  <dependency org="org.neo4j" name="neo4j" rev="2025.05.0"/>
  ..
</dependencies>
..

name 可以在版本表中找到。

Gradle

包含 Neo4j 库的 Gradle 构建脚本示例
def neo4jVersion = "2025.05.0"
apply plugin: 'java'
repositories {
   mavenCentral()
}
dependencies {
   implementation "org.neo4j:neo4j:${neo4jVersion}"
}

坐标(示例中的 org.neo4j:neo4j)可以在版本表中找到。

启动和停止

要启动嵌入式 DBMS,您需要实例化一个 org.neo4j.dbms.DatabaseManagementService 并获取 org.neo4j.graphdb.GraphDatabaseService,如下所示

managementService = new DatabaseManagementServiceBuilder( databaseDirectory ).build();
graphDb = managementService.database( DEFAULT_DATABASE_NAME );
registerShutdownHook( managementService );

如果您在嵌入模式下使用 Neo4j 企业版,则必须使用 com.neo4j.dbms.api.EnterpriseDatabaseManagementServiceBuilder 创建数据库以启用企业版功能。如果您打算操作嵌入式集群,则需要为您创建的实例提供适当的配置(例如,端口和发现端点)。为了便于维护,您可以在 neo4j.conf 文件中定义嵌入式 DBMS 配置,如下所示

server.default_advertised_address=core01.example.com
server.default_listen_address=0.0.0.0
dbms.cluster.discovery.resolver_type=LIST
dbms.cluster.endpoints=core01.example.com,core02.example.com,core03.example.com
server.bolt.enabled=true
server.http.enabled=true
var managementService = new EnterpriseDatabaseManagementServiceBuilder( homeDirectory )
    .loadPropertiesFromFile( Path.of( "/path/to/neo4j.conf" ) )
    .build();

也可以使用构建器并以编程方式指定所有参数

var defaultAdvertised = new SocketAddress( "core01.example.com" );
var defaultListen = new SocketAddress( "0.0.0.0" );

var initialMembers = List.of(
    new SocketAddress( "core01.example.com" ),
    new SocketAddress( "core02.example.com" ),
    new SocketAddress( "core03.example.com" )
);

var managementService = new EnterpriseDatabaseManagementServiceBuilder( homeDirectory )
    .setConfig( GraphDatabaseSettings.default_advertised_address, defaultAdvertised )
    .setConfig( GraphDatabaseSettings.default_listen_address, defaultListen )
    .setConfig( DiscoverySettings.discovery.resolver_type, DiscoveryType.LIST )
    .setConfig( DiscoverySettings.cluster_endpoints, initialMembers )
    .setConfig( EnterpriseEditionSettings.initial_default_primaries_count, 3 )
    .setConfig( BoltConnector.enabled, true )
    .setConfig( HttpConnector.enabled, true )
    .build();

仔细考虑要启用哪些服务以及在哪些端口和接口上启用非常重要。如果您不需要 Bolt 或 HTTP,最好将其禁用。

DatabaseManagementServiceGraphDatabaseService 实例可以在多个线程之间共享。但请注意,您不能创建指向同一数据库的多个服务。

要停止数据库,请调用 shutdown() 方法

managementService.shutdown();

为确保 Neo4j 正确关闭,请添加一个关闭钩子

private static void registerShutdownHook( final DatabaseManagementService managementService )
{
    // Registers a shutdown hook for the Neo4j instance so that it
    // shuts down nicely when the VM exits (even if you "Ctrl-C" the
    // running application).
    Runtime.getRuntime().addShutdownHook( new Thread()
    {
        @Override
        public void run()
        {
            managementService.shutdown();
        }
    } );
}

使用配置设置启动嵌入式数据库

要使用配置设置启动 Neo4j,可以按如下方式加载 Neo4j 属性文件

DatabaseManagementService managementService = new DatabaseManagementServiceBuilder( directory )
    .loadPropertiesFromFile( Path.of( pathToConfig + "neo4j.conf" ) ).build();
GraphDatabaseService graphDb = managementService.database( DEFAULT_DATABASE_NAME );

配置设置也可以按如下方式通过编程方式应用

DatabaseManagementService managementService = new DatabaseManagementServiceBuilder( directory )
    .setConfig( GraphDatabaseSettings.pagecache_memory, ByteUnit.mebiBytes( 512 ) )
    .setConfig( GraphDatabaseSettings.transaction_timeout, Duration.ofSeconds( 60 ) )
    .setConfig( GraphDatabaseSettings.preallocate_logical_logs, true ).build();
GraphDatabaseService graphDb = managementService.database( DEFAULT_DATABASE_NAME );

启动嵌入式只读实例

如果您想要数据库的只读视图,请创建一个实例,并将 read_only_database_default 配置设置设为 true

managementService = new DatabaseManagementServiceBuilder( dir ).setConfig( GraphDatabaseSettings.read_only_database_default, true ).build();
graphDb = managementService.database( DEFAULT_DATABASE_NAME );

在这种情况下,数据库必须已经存在。

不支持多个(只读或写入)实例并发访问同一数据库文件。

将 Neo4j 添加到构建路径

从以下来源之一获取 Neo4j 库

将 JAR 文件添加到您的项目

JDK 工具

追加到 -classpath

Eclipse
  • 右键单击项目,然后转到 构建路径 → 配置构建路径。在对话框中,选择 添加外部 JAR,浏览 Neo4j 的 lib/ 目录,并选择所有 JAR 文件。

  • 另一个选项是使用 用户库

IntelliJ IDEA

请参阅 库、全局库和配置库对话框

NetBeans
  • 右键单击项目的 节点,选择 添加 JAR/文件夹,浏览 Neo4j 的 lib/ 目录并选择所有 JAR 文件。

  • 您还可以从项目节点管理库,请参阅 管理项目的类路径

版本

下表概述了可用的版本及其在依赖管理工具中使用的名称。

请点击表格中的链接,了解 Apache Maven、Apache Buildr、Apache Ivy、Groovy Grape、Grails 和 Scala SBT 的依赖配置详情。

表 1. Neo4j 版本
Neo4j 版本 依赖 描述

社区版

org.neo4j:neo4j

一个高性能、完全 ACID 事务性图数据库。

企业版

org.neo4j:neo4j-enterprise

增加了高级监控、在线备份和集群功能。

请注意,列出的依赖项不包含实现,而是通过传递性方式引入。

有关许可的信息,请参阅许可指南

Javadocs 可以从 Maven Central 下载为 JAR 文件,或在Neo4j Javadocs中阅读。

© . All rights reserved.