AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.
See how MongoDB 9.0 delivers up to 2x higher throughput.
MongoDB Branding Shape
Register now >
Docs Menu

Spring Boot 스타터 시작하기

이 튜토리얼에서는 하이버네이트 ORM 확장을 사용하여 MongoDB 에 Java 지속성 API (JPA) 엔터티를 저장하는 Spring Boot 애플리케이션 만드는 방법을 학습 수 있습니다. 애플리케이션 Movie 엔티티, Spring Data JPA 리포지토리 및 스타트업 시 실행되는 쿼리 정의합니다.

시작하기 전에 최대 절전 모드 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

스타터에는 최대 절전 모드 ORM 7.4 이상이 필요합니다. Spring Boot는 BOM(Bill of Material)을 통해 하이버네이트 ORM 버전을 관리하며, 일부 Spring Boot 4.x 릴리스는 스타터에 필요한 버전보다 이전 버전의 하이버네이트 ORM을 관리 . managed 버전이 7.4보다 이전인 경우, 애플리케이션 시작되지 않고 하이버네이트 ORM 확장이 NoSuchMethodError를 발생시킵니다.

Maven 프로젝트 에서 managed 버전을 재정의하려면 pom.xml 파일 에 다음 속성 추가합니다.

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

Gradle 프로젝트 에서 managed 버전을 재정의하려면 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> 플레이스홀더를 하이버네이트 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 스타터 구성을 참조하세요.

데이터를 엔터티로 모델링하는 방법을 학습 컬렉션을 나타내는 엔터티 만들기를 참조하세요.

데이터를 쿼리 방법을 학습 데이터와의 상호 작용 섹션을 참조하세요.