Docs Menu
Docs Home
/ /

엔터티 만들기

이 가이드 에서는 MongoDB 컬렉션을 나타내는 최대 절전 모드 ORM 엔터티를 만드는 방법을 학습 수 있습니다. 엔터티는 데이터의 구조를 정의하는 Java 클래스입니다. 하이버네이트 ORM 확장을 사용할 때 각 엔터티를 MongoDB 컬렉션 에 매핑하고 이러한 엔터티를 사용하여 컬렉션의 문서와 상호 작용 수 있습니다.

Entities Tutorial

To view a tutorial that shows how to model one-to-many relatonships by using entities and the Hibernate ORM extension, see the Modeling Relationships With Hibernate ORM and MongoDB Foojay blog post.

MongoDB 유연한 데이터 처리 허용하는 BSON 이라는 바이너리 표현으로 문서를 구성하고 저장합니다. 이 섹션에서는 엔터티에 포함할 수 있는 BSON 필드에 대한 하이버네이트 ORM 확장 지원 에 대해 설명합니다.

MongoDB BSON 데이터를 저장하는 방법에 대해 자세히 학습 MongoDB Server 매뉴얼에서 BSON 유형을 참조하세요.

다음 표에서는 지원되는 BSON 필드 유형과 하이버네이트 ORM 엔터티에서 사용할 수 있는 해당 하이버네이트 ORM 확장에 해당하는 내용을 설명합니다.

BSON 필드 유형
확장 필드 유형
BSON 설명

null

null

Represents a null value or absence of data.

Binary

byte[]

Stores binary data with subtype 0.

String

char, java.lang.Character, java.lang.String 또는 char[]

Stores UTF-8 encoded string values.

Int32

int or java.lang.Integer

Stores 32-bit signed integers.

Int64

long or java.lang.Long

Stores 64-bit signed integers.

Double

double or java.lang.Double

Stores floating-point values.

Boolean

boolean or java.lang.Boolean

Stores true or false values.

Decimal128

java.math.BigDecimal

Stores 28-bit decimal values.

ObjectId

org.bson.types.ObjectId

Stores unique 12-byte identifiers that MongoDB uses as primary keys.

Date

java.time.Instant

Stores dates and times as milliseconds since the Unix epoch.

Object

@org.hibernate.annotations.Struct 애그리게이션 임베딩 가능

Stores embedded documents with field values mapped according to their respective types. @Struct aggregate embeddables might also contain array or Collection attributes.

Array

Array, 지원되는 유형의 java.util.Collection (또는 하위 유형)

Stores array values with elements mapped according to their respective types. Character arrays require setting the hibernate.type.wrapper_array_handling configuration property.

MongoDB 컬렉션 파일 엔터티를 만들려면 프로젝트의 기본 패키지 디렉토리 에 새 Java 파일 만들고 엔터티 클래스를 추가합니다. 엔터티 클래스에서 저장 하려는 필드와 컬렉션 이름을 지정합니다. @jakarta.persistence.Table 주석의 name 요소는 MongoDB 컬렉션 이름을 나타냅니다. 다음 구문을 사용하여 엔터티를 정의합니다.

@Entity
@Table(name = "<collection name>")
public class <EntityName> {
@Id
@ObjectIdGenerator
private ObjectId id;
// Include additional fields here
private <field type> <field name>;
// Parameterized constructor
public <EntityName>(<parameters>) {
// Initialize fields here
}
// Default constructor
public <EntityName>() {
}
// Getter and setter methods
public <field type> get<FieldName>() {
return <field name>;
}
public void set<FieldName>(<field type> <field name>) {
this.<field name> = <field name>;
}
}

엔터티를 사용하려면 애플리케이션 파일에서 엔터티를 쿼리 하면 됩니다. 하이버네이트 ORM 확장의 CRUD 작업에 대해 자세히 학습 CRUD 작업 수행 가이드 참조하세요.

이 샘플 Movie.java 엔티티 클래스는 다음 정보를 포함하는 Movie 엔티티를 정의합니다.

  • @Entity 클래스를 최대 절전 모드 ORM 엔터티로 표시하는 주석

  • @Table Atlas 샘플 데이터 세트의 컬렉션 에 엔터티를매핑하는 주석 movies

  • @Idid 필드 기본 키 지정하고 자동 ObjectId 생성을 구성하는 @ObjectIdGenerator 주석

  • 영화 데이터를 나타내는 비공개 필드

  • 엔터티 인스턴스화를 위한 기본 생성자 및 매개 변수화된 생성자

  • 엔터티의 필드에 대한 액세스 제공하는 Getter 및 setter 메서드

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 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;
}
}

엔터티 클래스 정의에 사용되는 필드에 대해 자세히 학습 이 가이드 의 MongoDB BSON 필드 섹션을 참조하세요.

하이버네이트 ORM 확장은 하이버네이트 ORM @Embeddable 어노테이션을 통해 내장된 문서를 지원합니다. 내장된 문서를 사용하면 MongoDB 문서 내에서 일대다, 다대일 및 일대일 관계를 만들 수 있습니다. 이 형식은 함께 자주 액세스하는 데이터를 나타내는 데 이상적입니다.

내장된 문서를 나타내려면 클래스에 @Struct@Embeddable 주석을 사용하여 @Struct 애그리게이션 임베딩 가능 항목을 만듭니다. 그런 다음 상위 엔터티에 임베딩 가능한 유형을 필드 로 포함합니다. 하이버네이트 ORM 확장은 단일 객체, 배열 및 임베딩 가능한 컬렉션의 임베딩을 지원합니다.

애그리게이션 임베딩 가능에 대해 자세히 @Struct 학습 Hibernate ORM 문서에서 @Struct 애그리게이션 임베딩 가능 매핑을 참조하세요.

일대일 관계 는 한 데이터베이스 의 기록 다른 데이터베이스 의 정확히 하나의 기록 와 연결되는 경우입니다. MongoDB 에서는 내장된 문서 필드 있는 컬렉션 만들어 일대일 관계 모델링할 수 있습니다. 하이버네이트 ORM 확장을 사용하면 @Struct 애그리게이션 임베더블을 사용하여 내장된 문서 필드를 생성할 수 있습니다.

이 예시 이 가이드 의 엔터티 정의 예시 와 유사한 엔터티에 @Struct 애그리게이션 임베딩 가능 유형이 있는 필드 정의합니다. 샘플 Movie.java 엔티티 클래스에는 다음 정보가 포함되어 있습니다.

  • @Entity 및 엔티티를 정의하고 이를 movies 컬렉션 에 매핑하는 @Table 주석

  • @Idid 필드 기본 키 지정하는 @ObjectIdGenerator 주석

  • 영화의 제목을 나타내는 문자열 필드

  • @Struct 영화 시상 및 스튜디오 정보를 나타내는 임베딩 가능한 필드 애그리게이션

다음 예시 각 Movie 엔터티가 하나의 Awards 임베딩 가능 항목 및 하나의 Studio 임베딩 가능 항목과 연결되어 있으므로 일대일 관계 나타냅니다.

@Entity
@Table(name = "movies")
public class Movie {
@Id
@ObjectIdGenerator
private ObjectId id;
private String title;
private Awards awards;
private Studio studio;
public Movie(String title, Awards awards, Studio studio) {
this.title = title;
this.awards = awards;
this.studio = studio;
}
public Movie() {
}
// Getter and setter methods
}

다음 샘플 코드는 Awards @Struct 임베딩 가능 애그리게이션을 생성합니다.

@Embeddable
@Struct(name = "Awards")
public class Awards {
private int wins;
private int nominations;
private String text;
public Awards(int wins, int nominations, String text) {
this.wins = wins;
this.nominations = nominations;
this.text = text;
}
public Awards() {
}
// Getter and setter methods
}

다음 샘플 코드는 Studio @Struct 임베딩 가능한 애그리게이션을 생성합니다.

@Embeddable
@Struct(name = "Studio")
public class Studio {
private String name;
private String location;
private int foundedYear;
public Studio(String name, String location, int foundedYear) {
this.name = name;
this.location = location;
this.foundedYear = foundedYear;
}
public Studio() {
}
// Getter and setter methods
}

일대다 관계 는 한 데이터베이스 의 기록 다른 데이터베이스 의 여러 레코드와 연결된 경우를 말합니다. MongoDB 에서는 내장된 문서 목록을 저장하는 컬렉션 필드 정의하여 일대다 관계 모델링할 수 있습니다. 하이버네이트 ORM 확장을 사용하면 @Struct 애그리게이션 임베더블 목록을 사용하여 내장된 문서 필드를 생성할 수 있습니다.

이 예시 이 가이드 의 엔터티 예시 예시 와 @Struct 유사하게 엔터티에 애그리게이션 임베더블 목록을 저장하는 필드 정의합니다. 샘플 Movie.java 엔티티 클래스에는 다음 정보가 포함되어 있습니다.

  • @Entity 및 엔티티를 정의하고 이를 movies 컬렉션 에 매핑하는 @Table 주석

  • @Idid 필드 기본 키 지정하는 @ObjectIdGenerator 주석

  • 영화의 제목을 나타내는 문자열 필드

  • 작성기 정보를 나타내는 여러 Writer @Struct 애그리게이션 임베더블을 저장하는 목록 필드

다음 예시 각 Movie 엔터티가 여러 Writer 임베더블과 연결되어 있으므로 일대다 관계 나타냅니다.

@Entity
@Table(name = "movies")
public class Movie {
@Id
@ObjectIdGenerator
@Column(name = "_id")
private ObjectId id;
private String title;
private List<Writer> writers;
public Movie(String title, List<Writer> writers) {
this.title = title;
this.writers = writers;
}
public Movie() {
}
// Getter and setter methods
}

다음 샘플 코드는 Writer @Struct 임베딩 가능한 애그리게이션을 생성합니다.

@Embeddable
@Struct(name = "Writer")
public class Writer {
private String name;
public Writer() {
}
public Writer(String name) {
this.name = name;
}
// Getter and setter methods
}

엔터티를 사용하여 데이터베이스 작업을 실행 방법을 학습 데이터와의 상호 작용 섹션에서 다음 가이드를 참조하세요.

To learn more about Hibernate ORM fields, see the Mapping types section in the Hibernate ORM documentation.

To learn more about Hibernate ORM entities, see POJO Models in the Hibernate ORM documentation.

돌아가기

시작하기

이 페이지의 내용