개요
Hibernate ORM enables you to use Java objects to perform database operations, and you can use the MongoDB Extension for Hibernate ORM to simplify your application's interactions with MongoDB data. This guide shows how to install the Hibernate ORM extension, set up a MongoDB deployment, and create a Java application that defines classes mapped to MongoDB collections.
팁
MongoDB Atlas는 관리형 클라우드 데이터베이스 서비스로, MongoDB deployment를 호스팅합니다. 이 가이드의 단계에 따라 자체 무료(신용카드 필요 없음) MongoDB Atlas 배포서버를 생성할 수 있습니다.
다운로드 및 설치
종속성 설치
개발을 시작하기 전에 로컬 시스템에 다음 종속성이 설치되어 있는지 확인합니다.
Java version 17 or later
IntelliJ IDEA 또는 Eclipse와 같은 통합 개발 환경(IDE)
참고
이 튜토리얼에서는 IDE에서 Maven 또는 Gradle을 사용하여 애플리케이션 만드는 방법을 보여줍니다. IDE를 사용하지 않는 경우 프로젝트 설정하다 방법을 학습 Maven 빌드 또는 새 Gradle 빌드 만들기를 참조하세요.
확장 프로그램 설치
IDE에서 MongoHibernateQuickstart이라는 새 Maven 또는 Gradle 프로젝트 만듭니다. Maven 프로젝트의 경우 pom.xml 파일 에 다음 종속성을 추가합니다.
<dependencies> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongodb-hibernate</artifactId> <version>1.0.0-alpha0</version> </dependency> </dependencies>
Gradle 프로젝트의 경우 build.gradle 파일 에 다음 종속성을 추가합니다.
dependencies { implementation("org.mongodb:mongodb-hibernate:1.0.0-alpha0") }
IDE에서 프로젝트 다시 로드하거나 동기화 하여 최대 절전 모드 ORM 확장 설치를 완료해야 합니다.
이 단계를 완료하면 하이버네이트 ORM 확장이 설치되고 IDE에 새 Maven 또는 Gradle 프로젝트 설정하다 됩니다.
MongoDB Deployment 생성
MongoDB Atlas에 프리 티어 MongoDB 배포를 생성하여 데이터를 저장하고 관리할 수 있습니다. MongoDB Atlas는 클라우드에서 MongoDB database를 호스팅하고 관리합니다.
Atlas에서 무료 MongoDB 배포서버 생성
MongoDB 시작하기 가이드 완료하여 새 Atlas 계정을 설정하다 하고 샘플 데이터를 새 무료 계층 MongoDB deployment 서버에 로드합니다. 탭의 지침에 따라 Cloud Deployment cloud 에서 MongoDB Atlas 배포서버 만듭니다.
이 단계를 완료하면 Atlas에 새로운 프리 티어 MongoDB 배포서버, 데이터베이스 사용자 자격 증명 및 샘플 데이터가 데이터베이스에 로드됩니다.
연결 문자열 만들기
연결 문자열이라고도 하는 연결 URI을 제공하여 MongoDB 배포서버에 연결할 수 있으며, 이 연결 문자열은 드라이버에 MongoDB 배포서버로 연결하는 방법과 연결된 동안 동작하는 방법을 지시합니다.
연결 문자열에는 배포서버의 호스트 이름 또는 IP 주소와 포트, 인증 메커니즘, 해당되는 경우 사용자 자격 증명, 연결 옵션 등이 포함됩니다.
MongoDB Atlas 연결 문자열 찾기
이전 단계에서 만든 배포서버에 대한 연결 문자열 조회 하려면 Atlas 계정에 로그 Clusters 섹션으로 이동합니다. 다음 스크린샷과 같이 새 배포서버 에 대한 Connect 버튼을 클릭합니다.

그런 다음 Connect your application 섹션으로 이동합니다. Driver 선택 메뉴에서 "Java"를 선택하고 Version 선택 메뉴에서 설치한 버전과 가장 일치하는 버전을 선택합니다.
이 단계를 완료하면 사용자 이름, 비밀번호 및 데이터베이스 포함된 연결 문자열 생성됩니다.
애플리케이션 구성
최대 절전 모드 ORM 확장을 설치하고 MongoDB Atlas cluster 만든 후 MongoDB 에 연결하는 Java 애플리케이션 을 만들 수 있습니다.
애플리케이션 을 MongoDB 에 연결
MongoHibernateQuickstart 프로젝트의 src/main/resources 디렉토리 로 이동하여 애플리케이션의 구성 설정을 저장하는 hibernate.cfg.xml라는 새 파일 만듭니다.
다음 코드를 이 파일 에 복사합니다.
<hibernate-configuration> <session-factory> <property name="hibernate.dialect">com.mongodb.hibernate.dialect.MongoDialect</property> <property name="hibernate.connection.provider_class"> com.mongodb.hibernate.jdbc.MongoConnectionProvider </property> <property name="jakarta.persistence.jdbc.url"> connection-string </property> <property name="hibernate.show_sql">true</property> <mapping class="org.example.Movie"/> </session-factory> </hibernate-configuration>
속성 에서 자리 표시자를 이전 단계에서 만든 연결 jakarta.persistence.jdbc.url connection-string 문자열 로 바꿉니다.
세션 관리 위한 유틸리티 클래스 생성
참고
기본 패키지 디렉토리
이 튜토리얼에서는 Maven 및 Gradle의 기본값 org.example 패키지 사용하고 src/main/java/org.example 디렉토리 에 애플리케이션 파일을 추가합니다. 다른 패키지 이름을 사용하는 경우 해당 디렉토리 에 파일을 만들어야 합니다.
프로젝트의 src/main/java/org.example 디렉토리 에서 HibernateUtil.java라는 새 파일 만듭니다. 이 유틸리티 클래스는 hibernate.cfg.xml 구성 파일 기반으로 SessionFactory 를 생성합니다.
다음 코드를 이 파일 에 복사합니다.
package org.example; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public final class HibernateUtil { private static final SessionFactory SESSION_FACTORY = new Configuration().configure("hibernate.cfg.xml").buildSessionFactory(); private HibernateUtil() {} public static SessionFactory getSessionFactory() { return SESSION_FACTORY; } }
Movie 엔티티 정의
프로젝트의 org.example 디렉토리 에서 라는 새 파일 Movie.java 만듭니다. 이 파일 Movie 에는 sample_mflix.movies Atlas 샘플 데이터 세트의 샘플 컬렉션 나타내는 엔터티가 포함되어 있습니다.
다음 코드를 이 파일 에 복사합니다.
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; public class Movie { private ObjectId id; private String title; private String plot; private int year; private String[] cast; public Movie(String title, String plot, int year, String[] cast) { this.title = title; this.plot = plot; this.year = year; this.cast = cast; } public Movie() { } public ObjectId getId() { return id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getPlot() { return plot; } public void setPlot(String plot) { this.plot = plot; } public int getYear() { return year; } public void setYear(int year) { this.year = year; } public String[] getCast() { return cast; } public void setCast(String[] cast) { this.cast = cast; } }
이 파일 다음 필드가 있는 Movie 엔터티를 정의합니다.
id: MongoDB_id필드 에 매핑된 영화의 고유 식별자입니다.title: 영화의 제목입니다.year: 영화가 개봉된 연도입니다.cast: 영화의 출연진을 나타내는 문자열 배열 입니다.
기본 애플리케이션 클래스 정의
프로젝트의 org.example 디렉토리 에서 Main.java라는 새 파일 만듭니다. 이 파일 에는 애플리케이션의 로직을 저장하는 메인 애플리케이션 클래스가 포함되어 있습니다.
다음 코드를 이 파일 에 복사합니다.
package org.example; import org.hibernate.Transaction; import org.hibernate.Session; public class Main { public static void main(String[] args) { var sf = HibernateUtil.getSessionFactory(); Session session = sf.openSession(); Transaction tx = session.beginTransaction(); // Add CRUD operations here tx.commit(); session.close(); sf.close(); } }
이 단계를 완료하면 최대 절전 모드 ORM 확장을 사용하고 MongoDB deployment 에 연결하도록 Java 애플리케이션 구성한 것입니다. 애플리케이션 의 파일 구조는 다음과 같습니다.
MongoHibernateQuickstart ├── src │ └── main │ ├── java │ │ └── org.example │ │ ├── HibernateUtil.java │ │ ├── Main.java │ │ └── Movie.java │ └── resources │ └── hibernate.cfg.xml ├── .gitignore ├── pom.xml (for Maven projects) └── build.gradle (for Gradle projects)
샘플 쿼리 실행
확장 프로그램이 MongoDB 쿼리로 변환하는 Movie 객체에 대한 쿼리를 실행 수 있습니다.
필드 에서 쿼리 실행 title
Main.java 파일 로 이동하여 // Add CRUD operations here 주석 아래에 다음 코드를 붙여넣습니다.
var searchTitle = "Little Women"; var results = session.createQuery("from Movie m where m.title = :t", Movie.class) .setParameter("t", searchTitle) .getResultList(); for (var m : results) { System.out.println("Title: " + m.getTitle() + ", Year: " + m.getYear()); }
이 코드는 하이버네이트 ORM의 하이버네이트 쿼리 언어(HQL)를 사용하여 title 값이 "Little Women"인 sample_mflix.movies 문서를 조회 . 그런 다음 각 결과의 title 및 year 값을 인쇄합니다.
팁
HQL에 대해 자세히 학습 하이버네이트 ORM 사용자 가이드 에서 하이버네이트 쿼리 언어를 참조하세요.
애플리케이션 실행하기
IDE에서 Main.java 파일 실행합니다. 출력에는 데이터베이스 명령 및 조회된 문서에 대한 세부 정보가 포함됩니다.
Hibernate: {"aggregate": "movies", "pipeline": [{"$match": {"title": {"$eq": {"$undefined": true}}}}, {"$project": {"_id": true, "cast": true, "plot": true, "title": true, "year": true}}]} Title: Little Women, Year: 1949 Title: Little Women, Year: 1994
MongoDB에 데이터 쓰기
Movie 객체를 만들고 수정하여 MongoDB deployment 에 데이터를 쓰기 (write) 수 있습니다.
컬렉션 에 movies 문서 삽입
Main.java 파일 에서 다음 코드를 추가하여 myMovie 라는 Movie 엔터티 인스턴스 만들고 데이터베이스 에 저장합니다.
var title = "A Real Pain"; var plot = "Mismatched cousins David and Benji tour Poland to honor their grandmother. " + "Their adventure becomes complicated as old tensions resurface while exploring their family history."; var year = 2024; var cast = new String[]{"Jesse Eisenberg", "Kieran Culkin", "Will Sharpe"}; var myMovie = new Movie(title, plot, year, cast); session.persist(myMovie); System.out.println("Movie created with ID: " + myMovie.getId());
이 코드는 새 Movie 엔터티 인스턴스 만들고 session.persist() 메서드를 사용하여 데이터베이스 에 저장합니다.
문서 업데이트
Main.java 파일 에 다음 코드를 추가하여 이전 단계에서 만든 Movie 인스턴스 업데이트 .
var updatedCast = new String[]{"Jesse Eisenberg", "Kieran Culkin", "Will Sharpe", "Jennifer Grey"}; myMovie.setCast(updatedCast); System.out.println("Movie updated with new cast member: " + updatedCast[3]);
이 코드는 myMovie 엔터티 인스턴스 의 cast 필드 업데이트합니다. 하이버네이트 ORM 확장은 이 변경 사항을 데이터베이스 의 해당 문서 에 적용합니다.
애플리케이션 실행하기
IDE에서 Main.java 파일 실행합니다. 출력에는 쓰기 (write) 작업에 대한 세부 정보가 포함됩니다.
Hibernate: {"insert": "movies", "documents": [{"cast": {"$undefined": true}, "plot": {"$undefined": true}, "title": {"$undefined": true}, "year": {"$undefined": true}, "_id": {"$undefined": true}}]} Hibernate: {"delete": "movies", "deletes": [{"q": {"_id": {"$eq": {"$undefined": true}}}, "limit": {"$numberInt": "0"}}]} Movie created with ID: <ObjectId> Movie updated with new cast member: Jennifer Grey Movie deleted with ID: <ObjectId>
다음 단계
튜토리얼을 완료한 것을 축하합니다!
참고
이 튜토리얼에서 문제가 실행 하면 이 페이지 오른쪽에 있는 Rate this page 탭 사용하여 피드백 제출 .
일반적인 질문에 대한 지원은 MongoDB Stack Overflow 태그 또는 MongoDB Reddit Community를 사용하여 찾을 수 있습니다.
이 튜토리얼에서는 MongoDB Atlas 에서 호스팅되는 MongoDB deployment 에 연결하고 Hibernate ORM 확장을 사용하여 데이터와 상호 작용 Java 애플리케이션 을 만들었습니다.
최대 절전 모드 ORM 확장에 대해 자세히 학습 다음 리소스를 참조하세요.
Hibernate ORM extension API documentation
GitHub의 mongo-최대 절전 소스 코드
최대 절전 모드 ORM 문서
To view a Getting Started tutorial that shows how to install the Hibernate ORM extension and interact with book data, see the Getting Started With Hibernate ORM and MongoDB Foojay blog post.
