Apresentando o Spring Data MongoDB

Bom dia a todos!

O novo fluxo “Developer on the Spring Framework” começou, “de repente”, este curso se tornou muito popular entre os novos alunos e aqueles que já nos desaprenderam sobre Java e empresas “regulares”. Portanto, se for interessante, venha a nós para lições abertas e, é claro, compartilhe materiais interessantes sobre o assunto.

Tradução do Tutorial do Spring Data MongoDB
Postado por Anand Kumar

Vamos lá!

No mundo de hoje, é muito importante criar e executar o aplicativo o mais rápido possível. Além disso, o aplicativo deve ser fácil de desenvolver e manter.

O Spring é apenas uma estrutura que facilita a integração com muitas outras estruturas diferentes, o que simplifica o desenvolvimento de aplicativos usando o Spring. Uma dessas integrações é a integração do Spring com o MongoDB.



1. Introdução

Nesta lição, discutiremos uma combinação da estrutura Spring java mais famosa e do MongoDB do sistema de gerenciamento de banco de dados NoSQL (DBMS) mais famoso. O MongoDB é um NoSQL DBMS orientado a documentos que armazena dados em um formato semelhante a JSON.
A integração do Spring Data e do MongoDB é fornecida pelo Spring para facilitar a interação de ambos e a conveniência dos desenvolvedores, eliminando a necessidade de escrever muitas consultas para inserir, atualizar e excluir.

A seguir, estão alguns dos recursos fornecidos pelo projeto Spring Data MongoDB:

  1. O Spring Data permite que você use a classe @Configuration e a configuração XML.
  2. A hierarquia de exceções do Data Access Spring é usada para converter a exceção.
  3. Mapeamento integrado entre POJOs Java e um documento MongoDB.
  4. A classe MongoTemplate, que simplifica o uso de operações comuns do MongoDB.
  5. Além do MongoTemplate, você pode usar as classes MongoReader e MongoWriter para renderização de baixo nível.

A melhor maneira de entender qualquer tecnologia é usá-la na prática, e é exatamente isso que vamos fazer agora.

Vamos criar um programa simples para aprender mais sobre o Spring Data MongoDB.

2. Tecnologias e ferramentas

Vejamos as tecnologias e ferramentas que usaremos para criar o programa.

  1. Liberação do Eclispe Oxygen.2 (4.7.2)
  2. Java - versão 9.0.4
  3. Gradle - 4.6
  4. Servidor MongoDB - 3.6
  5. MongoCompass - 3.6
  6. SpringDataMongoDB - 2.0.5-RELEASE

3. Estrutura do projeto

A estrutura do nosso projeto terá a aparência mostrada abaixo.


Estrutura do projeto para o Spring Data MongoDB

O projeto gradle terá a estrutura mostrada acima. No caso do pom.xml, a estrutura do projeto será um pouco diferente.

4. O programa

Como parte deste programa, tentaremos concluir as tarefas abaixo.

  1. Salvando um objeto no MongoDB
  2. Atualizando um objeto no MongoDB
  3. Removendo um objeto do MongoDB
  4. Recuperando todos os objetos do MongoDB

Vamos agora analisar todos os componentes do programa. Primeiro, começaremos com as dependências e os arquivos jar necessários para o programa.

4.1 gradle

Usamos o Gradle para compilar como parte do programa. O arquivo build.gradle será semelhante ao mostrado abaixo.

 apply plugin: 'java' repositories { mavenCentral() } dependencies { compile group: 'org.springframework.data', name: 'spring-data-mongodb', version: '2.0.5.RELEASE' implementation 'com.google.guava:guava:23.0' testImplementation 'junit:junit:4.12' } 

No arquivo build.gradle , a linha apply plugin: 'java' informa qual plug-in instalar. No nosso caso, este é um plugin Java.

A tag repositories{} relata o repositório do qual as dependências devem ser extraídas. Escolhemos o mavenCentral para mavenCentral arquivos jar dependentes. Também podemos usar o jcenter para acessar os arquivos jar dependentes correspondentes.

A tag dependencies {} é usada para fornecer os dados necessários sobre os arquivos jar que precisam ser extraídos para o projeto.

4.2 Configuração para MongoDB

Para usar a configuração do MongoDB, precisamos implementar a classe AbstractMongoConfiguration . A classe MongoConfig.java será semelhante à mostrada abaixo. Aqui usamos anotações em vez de xml. Mas o XML também pode ser usado para configurar a configuração.

Implementação da classe MongoConfig.java

 package com.tutorial.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.mongodb.config.AbstractMongoConfiguration; import com.mongodb.MongoClient; @Configuration public class MongoConfig extends AbstractMongoConfiguration { @Override public String getDatabaseName() { return "local"; } @Override @Bean public MongoClient mongoClient() { return new MongoClient("127.0.0.1"); } } 

@Configuration usado para definir a classe MongoConfig.java como a classe de configuração. @Bean define o MongoClient .

4.3 Classe do modelo

Agora considere a classe do modelo. Usamos student.java como uma classe de modelo que contém atributos para Student, como Nome e Idade. A Student.java modelo Student.java usada para mapear POJOs para a coleção MongoDB.

Classe do modelo do aluno

 package com.tutorial.model; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; @Document(collection = "students") public class Student { public Student(String studentName, int studentAge) { this.studentName = studentName; this.studentAge = studentAge; } @Id private String id; String studentName; int studentAge; public String getStudentName() { return studentName; } public void setStudentName(String studentName) { this.studentName = studentName; } public int getStudentAge() { return studentAge; } public void setStudentAge(int studentAge) { this.studentAge = studentAge; } @Override public String toString() { return String.format( "Student[id=%s, studentName='%s', studentAge="+studentAge+"]", id, studentName); } } 

@Document define um documento. A propriedade collection determina a coleção que será usada para corresponder à coleção. Todos os atributos mencionados como parte da coleção devem estar acessíveis na classe POJO. @Id define o identificador de coleção.

4.4 Operações CRUD

Para executar operações CRUD (abreviação de criar, ler, atualizar, excluir), como salvar, atualizar, excluir e recuperar dados do MongoDB, usaremos o MongoOperations .

Agora, vejamos a classe MongoDBPOperations.java . Esta classe contém a implementação de todos os métodos de operações CRUD.

A classe MongoDBPOperations que será usada para executar operações CRUD

 package com.tutorial; import java.util.List; import org.springframework.data.mongodb.core.MongoOperations; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Update; import com.tutorial.model.Student; public class MongoDBPOperations { public void saveStudent(MongoOperations mongoOperation, Student student) { mongoOperation.save(student); System.out.println("Student saved successfully"); // student object got created with id. System.out.println("student : " + student); } public void searchStudent(MongoOperations mongoOperation, String critera,String value) { // query to search student Query searchStudent = new Query(Criteria.where(critera).is(value)); // find student based on the query Student resultStudent = mongoOperation.findOne(searchStudent, Student.class); System.out.println("Student found!!"); System.out.println("Student details: " + resultStudent); } public void updateStudent(MongoOperations mongoOperation, String critera,String value, String updateCriteria, String updateValue) { // query to search student Query searchStudent = new Query(Criteria.where(critera).is(value)); mongoOperation.updateFirst(searchStudent, Update.update(updateCriteria, updateValue), Student.class); System.out.println("Student got updated successfully"); } public void getAllStudent(MongoOperations mongoOperation) { List listStudent = mongoOperation.findAll(Student.class); for(Student student:listStudent) { System.out.println("Student = " + student); } } public void removeStudent(MongoOperations mongoOperation, String critera,String value) { Query searchStudent = new Query(Criteria.where(critera).is(value)); mongoOperation.remove(searchStudent, Student.class); System.out.println("Student removed successfully!! "); } } 

A classe mais importante de um programa Java é a classe que contém o método main .

4.5 Classe de aplicação

A classe principal que contém o método principal é a classe Application.java . Usaremos essa classe para chamar métodos da classe MongoDBPOperations .

Classe de aplicativo para chamar métodos da classe MongoDBPOperations

 package com.tutorial; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.data.mongodb.core.MongoOperations; import com.tutorial.config.MongoConfig; import com.tutorial.model.Student; public class Application { public static void main (String[] args) { // For Annotation ApplicationContext ctx = new AnnotationConfigApplicationContext(MongoConfig.class); MongoOperations mongoOperation = (MongoOperations) ctx.getBean("mongoTemplate"); MongoDBPOperations ops = new MongoDBPOperations(); Student student = new Student("John", 15); //save student ops.saveStudent(mongoOperation, student); // get student based on search criteria ops.searchStudent(mongoOperation, "studentName", "John"); //update student based on criteria ops.updateStudent(mongoOperation, "StudentName", "John", "studentAge", "18"); // get student based on search criteria ops.searchStudent(mongoOperation, "studentName", "John"); // get all the students ops.getAllStudent(mongoOperation); //remove student based on criteria ops.removeStudent(mongoOperation, "studentName", "John"); // get all the students ops.getAllStudent(mongoOperation); } } 

Vamos examinar passo a passo as operações que são executadas na classe Application.java :

  1. Criamos um ApplicationContext . Isso ocorre devido à necessidade de baixar a configuração.
  2. Além disso, um objeto MongoOperations foi MongoOperations para carregar o componente MongoTemplate .
  3. O objeto MongoDBOperations fornece acesso a métodos para executar várias operações do MongoOperation .
  4. Além disso, um objeto Student foi criado com o nome John e 15 anos.
  5. Chamamos o método saveMethod classe saveMethod e passamos os parâmetros necessários para salvar o objeto no banco de dados.
  6. Da mesma forma, chamamos os vários métodos MongoDBOperations um por um.

4.6 Iniciando o programa

Finalmente, vamos agora executar o programa como um aplicativo Java. Clique com o botão direito do mouse em Application.java -> Executar como -> Aplicativo Java.

O resultado a seguir aparecerá no console.


Saída do console após iniciar o programa

Agora vamos comentar o comando para excluir o objeto. O MongoDB armazenará dados com sucesso.

Além disso, vamos comentar a linha para excluir o objeto, como mostrado abaixo.

Aplicativo de classe após comentar os métodos de remoção

 package com.tutorial; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.data.mongodb.core.MongoOperations; import com.tutorial.config.MongoConfig; import com.tutorial.model.Student; public class Application { public static void main (String[] args) { // For Annotation ApplicationContext ctx = new AnnotationConfigApplicationContext(MongoConfig.class); MongoOperations mongoOperation = (MongoOperations) ctx.getBean("mongoTemplate"); MongoDBPOperations ops = new MongoDBPOperations(); Student student = new Student("John", 15); //save student ops.saveStudent(mongoOperation, student); // get student based on search criteria ops.searchStudent(mongoOperation, "studentName", "John"); //update student based on criteria ops.updateStudent(mongoOperation, "StudentName", "John", "studentAge", "18"); // get student based on search criteria ops.searchStudent(mongoOperation, "studentName", "John"); // get all the students ops.getAllStudent(mongoOperation); //remove student based on criteria //ops.removeStudent(mongoOperation, "studentName", "John"); // get all the students //ops.getAllStudent(mongoOperation); } } 

Depois de fazer alterações no programa, vamos reiniciá-lo. O seguinte aparece no console.


Console quando a operação de exclusão é comentada

Como resultado do comentário sobre o comando delete, o MongoDB armazenará os dados e, portanto, será semelhante ao mostrado abaixo.


Saída do MongoDB após o comando save and update

5. Faça o download do projeto Eclipse

Você pode fazer o download do código-fonte inteiro para este exemplo aqui.

O FIM

Como sempre, estamos esperando perguntas e comentários aqui ou vamos a Yuri para uma aula aberta, onde você pode não apenas ouvir, mas também perguntar.

Source: https://habr.com/ru/post/pt430520/


All Articles