Visão geral
Neste guia, você pode aprender a usar a extensão MongoDB para hibernação ORM para declarar índices de campo único, compostos e exclusivo em uma entidade. A extensão ORM do Hibername traduz os índices e restrições exclusivas que você declara sobre suas entidades em operações de índice do MongoDB quando você habilita a geração de esquema.
Configurar geração de esquema
Para criar os índices e restrições exclusivas declaradas em suas entidades, habilite a geração de esquema na configuraçãodo seu aplicativo. Você pode habilitar a geração de esquema com a açãocreate ou create-drop :
create: Cria os objetos de esquema sem soltá-los quando oSessionFactoryfecha.create-drop: Cria os objetos de esquema quando oSessionFactoryabre e os descarta quando fecha.
Aviso
A ação create-drop destina-se a desenvolvimento e teste. Não o use quando precisar preservar dados de produção.
Se você usar o Spring Boot, adicione a seguinte propriedade ao seu arquivo application.properties:
spring.jpa.properties.jakarta.persistence.schema-generation.database.action=create-drop
Se você configurar diretamente a Persistência de Jakarta, adicione a seguinte propriedade ao seu arquivo persistence.xml:
<property name="jakarta.persistence.schema-generation.database.action" value="create-drop"/>
Alternativamente, você pode definir a propriedade em seu arquivo hibernate.properties:
jakarta.persistence.schema-generation.database.action=create-drop
Quando a geração de esquema é executada, a extensão ORM do Hibername cria a coleção e emite comandos do MongoDB createIndexes para os índices e restrições exclusivas que suas entidades declaram.
Tipos de índice
Os exemplos deste guia declaram índices e restrições exclusivas adicionando anotações @Index e @UniqueConstraint à anotação @Table da seguinte entidade Movie:
public class Movie { private ObjectId id; private String title; private String plot; private int year; private List<String> cast; private List<String> directors; public Movie(String title, String plot, int year, List<String> cast, List<String> directors) { this.title = title; this.plot = plot; this.year = year; this.cast = cast; this.directors = directors; } public Movie() { } // Getter and setter methods }
Índices de campo único
Os índices de campo único são índices com uma referência a um único campo dentro dos documentos de uma coleção. Elas melhoram o desempenho de consulta e classificação para um único campo.
O exemplo a seguir cria um índice de campo único em ordem decrescente no campoyear :
Configure o columnList para o nome do campo e adicione asc ou desc para especificar a direção. Se você omitir a direção, o MongoDB criará um índice ascendente. O elemento name especifica o nome do índice MongoDB .
Para obter mais informações, consulte Índices de campo único no manual do MongoDB Server.
Índices compostos
Os índices compostos contêm referências a vários campos nos documentos de uma coleção, melhorando o desempenho de consulta e classificação.
O exemplo seguinte cria um índice composto nos campos title e year em ordem decrescente:
A ordem dos campos no columnList determina a ordem na qual o MongoDB classifica as chaves do índice, o que afeta quais prefixos de query o índice pode suportar. Por exemplo, um índice em title seguido por year pode suportar queries que correspondam apenas a title, enquanto um índice em year não ajuda uma query que corresponda apenas a title.
Para obter mais informações, consulte Índices compostos no manual do MongoDB Server.
Índices e restrições únicos
Índices únicos garantem que os campos indexados não armazenem valores duplicados.
Você pode criar um índice único com a anotação @Index ou @UniqueConstraint:
Utilize
@Index(unique = true)quando você precisar especificar opções de índice como direção de campo .Use
@UniqueConstraintquando quiser usar o modelo de restrição em nível de tabela. Os campos emcolumnNamesdefinem a ordem das chaves e@UniqueConstraintnão especifica instruções de campo , então o índice único resultante é ascendente.
O exemplo seguinte cria um índice único no campotitle :
O exemplo seguinte cria uma restrição única nos campos title e plot:
O MongoDB trata um null ou valor ausente em um campo indexado como um valor indexado. Devido à restrição exclusiva, um índice único de campo único pode conter apenas um documento com um valor null em sua entrada de índice.
Importante
A criação de índice exclusivo pode falhar
O MongoDB não pode criar um índice único no campo ou campos especificados se a collection já contiver documentos com valores duplicados para esses campos. Revise seus dados existentes em busca de valores duplicados antes de criar um índice único.
Para obter mais informações, consulte Índices únicos no manual do MongoDB Server .
Informações adicionais
Para saber mais sobre como criar entidades e mapear dados incorporados, consulte o guia Criar entidades para representar coleções.
Para saber como usar suas entidades para executar operações de banco de dados , consulte os guias Executar operações CRUD e Especificar uma query.
Para visualizar uma lista dos tipos de índice que a extensão Hibername ORM suporta, consulte a página Compatibilidade de recursos.
Para saber mais sobre as anotações da Persistência de Jacarta usadas neste guia, consulte a documentação da API da Persistência de Jakarta.