Menu Docs
Página inicial do Docs
/ /

Criar Entidades

Neste guia, você pode aprender como criar entidades ORM do Hibernar que representam coleções MongoDB . As entidades são classes Java que definem a estrutura dos seus dados. Ao usar a extensão Hibername ORM, você pode mapear cada entidade para uma coleção MongoDB e usar essas entidades para interagir com os documentos da coleção.

Dica

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.

O MongoDB organiza e armazena documentos em uma representação binária chamada BSON que permite o processamento de dados flexível. Esta seção descreve o suporte da extensão Hibername ORM para campos BSON, que você pode incluir em suas entidades.

Dica

Para saber mais sobre como o MongoDB armazena dados BSON, consulte tipos de BSON no manual do MongoDB Server .

A tabela a seguir descreve os tipos de campo BSON suportados e seus equivalentes de extensão Hibername ORM que você pode usar em suas entidades Hibername ORM:

Tipo de campo BSON
Tipo de campo de extensão
Descrição do JSON

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 ou char[]

Stores UTF-8 encoded string values.

Int32

int ou java.lang.Integer

Stores 32-bit signed integers.

Int64

long ou java.lang.Long

Stores 64-bit signed integers.

Double

double ou java.lang.Double

Stores floating-point values.

Boolean

boolean ou 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 agregado incorporável

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 (ou subtipo) de tipos suportados

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

Para criar uma entidade que represente uma coleção MongoDB , crie um novo arquivo Java no diretório do pacote base do seu projeto e adicione sua classe de entidade ao novo arquivo. Na sua classe de entidade, especifique os campos que você deseja armazenar e o nome da coleção. O elemento name da anotação @jakarta.persistence.Table representa seu nome de coleção MongoDB . Use a seguinte sintaxe para definir uma entidade:

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

Para utilizar suas entidades, você pode consultá-las em seus arquivos do aplicação . Para saber mais sobre as operações CRUD na extensão ORM do Hibernar, consulte o guia Executar operações CRUD.

Esta classe de entidade do Movie.java de amostra define uma entidade do Movie que inclui as seguintes informações:

  • @Entity anotação que marca a classe como uma entidade ORM do Hibernar

  • @Table anotação que mapeia a entidade para a movies collection a partir dos conjuntos de dados de amostra do Atlas

  • @Id e @ObjectIdGenerator anotações que designam o campo id como a chave primária e configuram a geração automática de ObjectId

  • Campos privados que representam dados do filme

  • Construtores padrão e parametrizados para instanciação de entidade

  • Métodos de getter e setter que fornecem acesso aos campos da entidade

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

Dica

Para saber mais sobre os campos usados na definição da classe de entidade, consulte a seção Campos BSON do MongoDB deste guia.

A extensão Hibernar ORM suporta documentos incorporados por meio de anotações do Hibernado ORM @Embeddable. Com documentos incorporados, você pode criar relacionamentos um-para-muitos, muitos-para-um e um-para-um nos documentos do MongoDB . Esse formato é ideal para representar dados que são acessados juntos com frequência.

Para representar documentos incorporados, use as anotações @Struct e @Embeddable em uma classe para criar um agregado @Struct incorporável. Em seguida, inclua o tipo incorporável em sua entidade principal como um campo. A extensão Hibernar ORM oferece suporte à incorporação de objetos únicos, matrizes e coleções de incorporáveis.

Dica

Para saber mais sobre @Struct os incorporáveis agregados,consulte Mapeamento de incorporáveis agregados do @Struct na documentação ORM do Hibernado.

Um relacionamento um-para-um é quando um registro em um banco de dados está associado a exatamente um registro em outro banco de dados. No MongoDB , você pode criar uma coleção com um campo de documento incorporado para modelar um relacionamento um-para-um. A extensão Hibername ORM permite criar campos de documento incorporado usando @Struct embeddables agregados.

O exemplo define um campo com um @Struct tipo incorporável agregado em uma entidade semelhante ao exemplo Definir uma entidade neste guia. A Movie.java classe de entidade de amostra inclui as seguintes informações:

  • @Entity e anotações @Table que definem a entidade e a mapeiam para a coleção movies

  • @Id e @ObjectIdGenerator anotações que designam o campo id como a chave primária

  • campo de string que representa o título do filme

  • @Struct campos incorporáveis agregados que representam prêmios de filme e informações do atlas

O exemplo a seguir representa um relacionamento um-para-um porque cada entidade Movie está associada a um Awards incorporável e a um Studio incorporável:

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

O seguinte código de amostra cria um agregado Awards @Struct incorporável:

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

O seguinte código de amostra cria um agregado Studio @Struct incorporável:

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

Um relacionamento um-para-muitos é quando um registro em um banco de dados está associado a muitos registros em outro banco de dados. No MongoDB, você pode definir um campo de coleção que armazena uma lista de documentos incorporados para modelar um relacionamento um-para-muitos. A extensão Hibername ORM permite criar campos de documento incorporado usando uma lista de @Struct incorporáveis agregados.

O exemplo define um campo que armazena uma lista de @Struct incorporáveis agregados em uma entidade semelhante ao Exemplo de Definir uma Entidade neste guia. A Movie.java classe de entidade de amostra inclui as seguintes informações:

  • @Entity e anotações @Table que definem a entidade e a mapeiam para a coleção movies

  • @Id e @ObjectIdGenerator anotações que designam o campo id como a chave primária

  • campo de string que representa o título do filme

  • campo de lista que armazena vários embeddables agregados do Writer @Struct, que representa informações do escritor

O exemplo a seguir representa um relacionamento um-para-muitos porque cada entidade Movie está associada a vários incorporáveis 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
}

O seguinte código de amostra cria um agregado Writer @Struct incorporável:

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

Para saber como usar suas entidades para executar operações de banco de dados , consulte os seguintes guias na seção Interagir com dados:

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.

Voltar

Começar

Nesta página