Presentamos Spring Data MongoDB

Buen dia a todos!

La nueva transmisión "Developer on the Spring Framework" comenzó, "de repente", este curso resultó ser muy popular entre los nuevos estudiantes y aquellos que ya nos han desaprendido en Java "regular" y empresarial. Entonces, si es interesante, entonces ven a nuestras lecciones abiertas y, por supuesto, comparte materiales interesantes sobre el tema.

Traducción del tutorial de Spring Data MongoDB
Publicado por Anand Kumar

Vamos!

En el mundo de hoy, es muy importante crear y ejecutar la aplicación lo antes posible. Además, la aplicación debe ser fácil de desarrollar y de mantener.

Spring es simplemente un marco de trabajo que proporciona una fácil integración con muchos otros marcos diferentes, lo que simplifica el desarrollo de aplicaciones usando Spring. Una de esas integraciones es la integración de Spring con MongoDB.



1. Introducción

En esta lección, analizaremos una combinación del marco Spring Java más famoso y el sistema de gestión de bases de datos NoSQL (DBMS) más famoso MongoDB. MongoDB es un DBMS NoSQL orientado a documentos que almacena datos en un formato similar a JSON.
Spring proporciona la integración de Spring Data y MongoDB para facilitar la interacción de ambos y la conveniencia de los desarrolladores, eliminando la necesidad de escribir muchas consultas para insertar, actualizar y eliminar.

Las siguientes son algunas de las características proporcionadas por el proyecto Spring Data MongoDB:

  1. Spring Data le permite usar tanto la clase @Configuration como la configuración XML.
  2. La jerarquía de excepciones de Data Access Spring se utiliza para traducir la excepción.
  3. Mapeo integrado entre POJOs de Java y un documento MongoDB.
  4. La clase MongoTemplate, que simplifica el uso de operaciones comunes de MongoDB.
  5. Además de MongoTemplate, puede usar las clases MongoReader y MongoWriter para la representación de bajo nivel.

La mejor manera de entender cualquier tecnología es usarla en la práctica, y eso es exactamente lo que vamos a hacer ahora.

Creemos un programa simple para aprender más sobre Spring Data MongoDB.

2. Tecnologías y herramientas.

Veamos las tecnologías y herramientas que usaremos para crear el programa.

  1. Lanzamiento de Eclispe Oxygen.2 (4.7.2)
  2. Java - versión 9.0.4
  3. Gradle - 4.6
  4. Servidor MongoDB - 3.6
  5. MongoCompass - 3.6
  6. SpringDataMongoDB - 2.0.5-RELEASE

3. Estructura del proyecto.

La estructura de nuestro proyecto se verá como se muestra a continuación.


Estructura del proyecto para Spring Data MongoDB

El proyecto gradle tendrá la estructura que se muestra arriba. En el caso de pom.xml, la estructura del proyecto será ligeramente diferente.

4. El programa

Como parte de este programa, intentaremos completar las tareas a continuación.

  1. Guardar un objeto en MongoDB
  2. Actualización de un objeto en MongoDB
  3. Eliminar un objeto de MongoDB
  4. Recuperando todos los objetos de MongoDB

Analicemos ahora todos los componentes del programa. En primer lugar, comenzaremos con las dependencias y los archivos jar necesarios para el programa.

4.1 gradle

Usamos Gradle para construir como parte del programa. El archivo build.gradle se verá como el que se muestra a continuación.

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

En el archivo build.gradle , la línea apply plugin: 'java' le dice qué complemento instalar. En nuestro caso, este es un complemento de Java.

La etiqueta repositories{} informa el repositorio desde el que se deben extraer las dependencias. Elegimos mavenCentral para extraer archivos jar dependientes. También podemos usar jcenter para extraer los archivos jar dependientes correspondientes.

La etiqueta de dependencies {} se utiliza para proporcionar los datos necesarios sobre los archivos jar que deben extraerse para el proyecto.

4.2 Configuración para MongoDB

Para usar la configuración de MongoDB, necesitamos implementar la clase AbstractMongoConfiguration . La clase MongoConfig.java se verá como la que se muestra a continuación. Aquí usamos anotaciones en lugar de xml. Pero XML también se puede usar para configurar la configuración.

Implementación de la clase 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 utiliza para definir la clase MongoConfig.java como la clase de configuración. @Bean define el MongoClient .

4.3 Clase de modelo

Ahora considere la clase del modelo. Usamos student.java como clase de modelo que contiene atributos para Student, como Nombre y Edad. La Student.java modelo Student.java usa para asignar POJO a la colección MongoDB.

Clase modelo de estudiante

 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 un documento. La propiedad de collection determina la colección que se utilizará para coincidir con la colección. Todos los atributos a los que se hace referencia como parte de la colección deben estar accesibles en la clase POJO. @Id define el identificador de la colección.

4.4 Operaciones CRUD

Para realizar operaciones CRUD (abreviatura de crear, leer, actualizar, eliminar), como guardar, actualizar, eliminar y recuperar datos de MongoDB, utilizaremos MongoOperations .

Ahora veamos la clase MongoDBPOperations.java . Esta clase contiene la implementación de todos los métodos de operaciones CRUD.

La clase MongoDBPOperations que se usará para realizar operaciones 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!! "); } } 

La clase más importante de un programa Java es la clase que contiene el método main .

4.5 Clase de aplicación

La clase principal que contiene el método principal es la clase Application.java . Usaremos esta clase para llamar a métodos de la clase MongoDBPOperations .

Clase de aplicación para llamar a métodos de la clase 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); } } 

Veamos paso a paso las operaciones que se realizan en la clase Application.java :

  1. Creamos un ApplicationContext . Esto se debe a la necesidad de descargar la configuración.
  2. Además, se MongoOperations un objeto MongoOperations para cargar el componente MongoTemplate .
  3. El objeto MongoDBOperations proporciona acceso a métodos para realizar varias operaciones de MongoOperation .
  4. Además, se creó un objeto Estudiante con el nombre de John y 15 años.
  5. Llamamos al método saveMethod de la clase saveMethod y pasamos los parámetros necesarios para guardar el objeto en la base de datos.
  6. Del mismo modo, llamamos a los distintos métodos de MongoDBOperations uno por uno.

4.6 Inicio del programa

Finalmente, ahora ejecutemos el programa como una aplicación Java. Haga clic derecho en Application.java -> Ejecutar como -> Aplicación Java.

El siguiente resultado aparecerá en la consola.


Salida de la consola después de iniciar el programa

Ahora comentemos el comando para eliminar el objeto. MongoDB almacenará con éxito los datos.

Además, comentemos la línea para eliminar el objeto, como se muestra a continuación.

Aplicación de clase después de comentar los métodos de eliminación

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

Después de realizar cambios en el programa, reiniciémoslo. Lo siguiente aparece en la consola.


Consola cuando la operación de eliminación está comentada

Como resultado de comentar sobre el comando eliminar, MongoDB almacenará los datos y, por lo tanto, se verá como el que se muestra a continuación.


Salida de MongoDB después del comando guardar y actualizar

5. Descargue el proyecto Eclipse

Puede descargar el código fuente completo para este ejemplo aquí.

El fin

Como siempre, estamos esperando preguntas y comentarios aquí o vamos a Yuri para una lección abierta donde no solo puedes escuchar, sino también preguntar.

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


All Articles