将 Neo4j 嵌入到您的 Java 应用程序中
在为您的平台选择合适的版本后,您可以通过在构建中包含 Neo4j 库 JAR 文件,将 Neo4j 嵌入到您的 Java 应用程序中。以下章节将展示如何通过直接修改构建路径或使用依赖管理来实现这一点。
将 Neo4j 添加为依赖项
您可以选择使用顶级工件(artifact),也可以直接包含各个组件。以下示例均采用顶级工件方法。
|
这些示例仅适用于 Neo4j 社区版(Community Edition)。 如需将 Neo4j 企业版(Enterprise Edition)添加为依赖项,请联系 Neo4j 专业服务团队。有关社区版和企业版的详细信息,请参阅《操作手册》→《简介》(Operations Manual → Introduction)。 |
Maven
按照下方的代码片段将依赖项添加到您的项目中。这通常是在项目根目录下的 pom.xml 文件中完成的。
<project>
...
<dependencies>
<dependency>
<groupId>org.neo4j</groupId>
<artifactId>neo4j</artifactId>
<version>2026.03.1</version>
</dependency>
...
</dependencies>
...
</project>
其中,artifactId 可以在版本表中找到。
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="2026.03.1"/>
..
</dependencies>
..
name 可以在版本表中找到。
Gradle
def neo4jVersion = "2026.03.1"
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();
也可以使用构建器(builder)并以编程方式指定所有参数:
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,最好将其禁用。
|
|
要停止数据库,请调用 shutdown() 方法:
managementService.shutdown();
为确保 Neo4j 正确关闭,请添加一个关闭钩子(shutdown hook):
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 库:
-
解压 Neo4j zip/tarball,并使用 lib/ 目录中的 JAR 文件。
-
使用从 Maven 中央仓库获取的 JAR 文件。
将 JAR 文件添加到您的项目中
- JDK 工具
-
追加到
-classpath - Eclipse
-
-
右键点击项目,然后选择 Build Path → Configure Build Path。在对话框中,选择 Add External JARs,浏览 Neo4j 的 lib/ 目录,并选中所有 JAR 文件。
-
另一种选择是使用 用户库(User Libraries)。
-
- IntelliJ IDEA
-
请参阅库、全局库以及配置库对话框(Libraries, Global Libraries, and the Configure Library dialog)。
- NetBeans
-
-
右键点击项目的 Libraries 节点,选择 Add JAR/Folder,浏览 Neo4j 的 lib/ 目录并选中所有 JAR 文件。
-
您也可以从项目节点管理库,请参阅管理项目的类路径(Managing a Project’s Classpath)。
-
版本
下表概述了可用版本及其名称,以便在依赖管理工具中使用。
|
请按照表中的链接获取有关 Apache Maven、Apache Buildr、Apache Ivy、Groovy Grape、Grails 和 Scala SBT 的依赖配置详细信息。 |
| Neo4j 版本 | 依赖项 | 描述 |
|---|---|---|
社区 |
高性能、完全 ACID 事务性图数据库。 |
|
企业版 (Enterprise) |
添加高级监控、在线备份和集群功能。 |
注意,列出的依赖项本身不包含实现,而是通过传递性依赖获取。
有关许可信息,请参阅许可指南(Licensing Guide)。
可以从 Maven 中央仓库下载 Javadocs 的 JAR 文件,或在 Neo4j Javadocs 中在线阅读。