对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
See how MongoDB 9.0 delivers up to 2x higher throughput.
MongoDB Branding Shape
Register now >
Docs 菜单

开始使用 Spring Boot Starter

在本教程中,您可以学习;了解如何创建一个 Spring Boot应用程序,通过使用 Hibernate ORM 扩展在MongoDB中存储Java Persistence API (JPA) 实体。该应用程序定义了一个 Movie 实体、一个 Spring Data JPA存储库以及一个在初创企业运行的查询。

在开始之前,请完成 Hibernate ORM 扩展入门教程中的创建MongoDB部署和创建连接字符串步骤。这些步骤将创建本教程使用的Atlas部署、示例数据和连接字符串。

1

创建一个名为 MongoHibernateSpringQuickstart 的 Spring Boot 4.x项目。您可以使用 Spring Initializr 生成项目,也可以在 IDE 中创建项目。

Spring Initializr 生成以您的项目命名的主应用程序程序类,例如 MongoHibernateSpringQuickstartApplication.java。如果使用 Spring Initializr 生成项目,删除自动生成的主应用程序类文件。在本教程的后面,您将为此项目创建一个名为 Movie Application 的主应用程序文件。如果您的项目包含两个主应用程序程序类,则应用程序将无法启动,并出现 Unable to find a single main class 错误。

2

对于 Maven 项目,请将以下依赖项添加到 pom.xml文件中:

<dependencies>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-hibernate-spring-boot-starter</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>

对于 Gradle 项目,请将以下依赖项添加到您的 build.gradle文件中:

dependencies {
implementation("org.mongodb:mongodb-hibernate-spring-boot-starter:1.0.0")
}
3

入门版需要 Hibernate ORM 7.4 或更高版本。 Spring Boot 通过其物料清单 (BOM) 管理 Hibernate ORM 版本,并且某些 Spring Boot 4.x 版本管理的Hibernate ORM 版本比入门者所需的版本更早。如果托管版本早于 7.4,您的应用程序将无法启动,并且 Hibernate ORM 扩展会引发 NoSuchMethodError。

要覆盖 Maven项目中的托管版本,请将以下属性添加到 pom.xml文件中:

<properties>
<hibernate.version>7.4.7.Final</hibernate.version>
</properties>

要覆盖 Gradle项目中的托管版本,请将以下行添加到您的 build.gradle文件中:

ext['hibernate.version'] = '7.4.7.Final'

重新加载或同步项目以完成安装。

1

在项目的 src/main/resources目录中,打开 application.properties文件并添加以下属性:

spring.jpa.database-platform=MongoDB
spring.mongodb.uri=<connection string>
spring.jpa.properties.com.mongodb.hibernate.semantics.nulls=MQL

将 <connection string> 占位符替换为您在 Hibernate ORM 扩展入门教程的创建连接字符串步骤中创建的 sample_mflix连接字符串。您的连接字符串应类似于以下示例:

mongodb+srv://<db_username>:<db_password>@<cluster>/sample_mflix?<options>

您设立的应用程序属性将执行以下操作:

  • spring.jpa.database-platform:激活启动器。除非将此属性设立为 MongoDB,否则启动器将保持非活动状态。

  • spring.mongodb.uri:配置启动器重复使用的 MongoClient实例。启动器不会创建自己的客户端。

  • spring.jpa.properties.com.mongodb.hibernate.semantics.nulls:声明查询使用的 null 比较语义。此属性为必填项,唯一支持的值为 MQL。

2

在项目的 src/main/java/org/example目录中,创建一个名为 Movie.java 的文件并将以下代码粘贴到其中:

package org.example;
import com.mongodb.hibernate.annotations.ObjectIdGenerator;
import org.bson.types.ObjectId;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
@Entity
@Table(name = "movies")
public class Movie {
@Id
@ObjectIdGenerator
private ObjectId id;
private String title;
private int year;
public Movie() {
}
public Movie(String title, int year) {
this.title = title;
this.year = year;
}
public ObjectId getId() {
return id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}
}

该实体表示Atlas示例数据集中的 sample_mflix.movies集合。启动程序会扫描应用程序的主包中是否存在实体,因此您无需注册实体。

3

在同一目录中,创建名为 MovieRepository.java 的文件并将以下代码粘贴到其中:

package org.example;
import org.bson.types.ObjectId;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
public interface MovieRepository extends JpaRepository<Movie, ObjectId> {
List<Movie> findByTitle(String title);
}

启动器无需SQL DataSource 即可启用 Spring Data JPA 存储库,因此 Spring Boot 会为您实现 MovieRepository 接口。

4

在同一目录中,创建名为 MovieApplication.java 的文件并将以下代码粘贴到其中:

package org.example;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
@SpringBootApplication
public class MovieApplication {
public static void main(String[] args) {
SpringApplication.run(MovieApplication.class, args);
}
@Bean
CommandLineRunner run(MovieRepository repository) {
return args -> {
for (Movie movie : repository.findByTitle("Little Women")) {
System.out.println("Title: " + movie.getTitle()
+ ", Year: " + movie.getYear());
}
};
}
}

该类在初创企业时运行存储库查询并打印每部匹配的电影。

完成这些步骤后,您的应用程序将具有以下文件结构:

MongoHibernateSpringQuickstart
├── src
│ └── main
│ ├── java
│ │ └── org/example
│ │ ├── Movie.java
│ │ ├── MovieApplication.java
│ │ └── MovieRepository.java
│ └── resources
│ └── application.properties
├── .gitignore
├── pom.xml (for Maven projects)
└── build.gradle (for Gradle projects)

在 IDE 中运行 MovieApplication 类。输出类似于以下文本:

Title: Little Women, Year: 1949
Title: Little Women, Year: 1994

如果您的应用程序未启动,请参阅排除启动错误以了解可能的初创企业错误和故障排除提示。

要学习;了解如何设立JPA 属性、更改字段命名策略和自定义 MongoClient,请参阅配置 Spring Boot Starter。

要学习;了解如何将数据建模为实体,请参阅创建实体以表示集合。

要学习;了解如何查询数据,请参阅“与数据交互”部分。