Otra forma de instalar plugins en IntelliJ es ir a files > Settings o Ctrl + Alt + S / en Mac es con command + , (coma)
En el panel izquierdo se selecciona "plugins"
y solo queda buscar “MapStruct Support” e instalarlo 😃
Antes de empezar
Pasos para aprender Java Spring
Instalación de ambiente de desarrollo: Windows
¿Java sigue siendo gratuito?
Instalación de ambiente de desarrollo: Linux Ubuntu
Instalación de ambiente de desarrollo: macOS
Introducción a Spring boot
¿Qué es y qué usaremos de Spring?
Conocer qué es una aplicación autocontenida
Crear nuestra aplicación con Spring Initializr
Hola mundo con Spring Boot
Configurar Spring Boot
Crear la estructura del proyecto
Spring Data
¿Qué es JPA?
Conocer qué es Spring Data
Conectar la base de datos a nuestra aplicación
Mapear las tablas como clases
Crear Entity cuando su clave primaria es compuesta
Mapear relaciones entre clases
Usar la interface CrudRepository
Query Methods
Construyendo nuestra API
Implementar la anotación @Repository
¿Qué es el patrón Data Mapper y qué resuelve?
Orientar nuestra API al dominio con MapStruct
Orientar nuestro repositorio a términos del dominio
Inyección de dependencias
Implementar la anotación @Service
Implementar la anotación @RestController
Exponer nuestra API
Mejorando nuestra API
Controlar las respuestas HTTP
Crear el dominio de compras
Mapear el dominio de compras
Crear el repositorio de compras
Probando nuestros servicios de compras
Documentar nuestra API con Swagger
Spring Security
Configurar la seguridad de nuestra API con Spring Security
Generar un JWT
Autenticación con JWT
Autorización con JWT
Despliegue de nuestra aplicación
Desplegar nuestra API desde la ventana de comandos
Desplegar nuestra base de datos con Heroku
Desplegar nuestra API con Heroku
Conclusiones y despedida del curso
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Aportes 28
Preguntas 18
Otra forma de instalar plugins en IntelliJ es ir a files > Settings o Ctrl + Alt + S / en Mac es con command + , (coma)
En el panel izquierdo se selecciona "plugins"
y solo queda buscar “MapStruct Support” e instalarlo 😃
DATA MAPPER
Convertir o traducir dos objetos que pueden hacer una misma labor
No exponer directamente la base datos medianta la API
Esto garantiza que ningun agente externo, vizualice la forma del diseño de la base de datos
Desacoplar la API de una base de datos puntual
En el caso que se desee integrar una nueva base de datos con otros campos, pero que sea para el mismo proyecto, no es necesario cambiar todo el código, simplemente se crea otro traductor que sirva para traducir la nueva tabla al dominio
Evita tener campos innecesarios en la API
Evitar mezclar idiomas en el dominio
Si alguno esta viendo esto en 2022
Los pasos de instalación de MapStruct Plugin son:
Y listo 😃 espero les sirva
también puedes instalar el plugin desde el IDE con clic en File > Settings (Ctrl + Alt + S) seleccionar la opción Plugins y buscar MapStruct Support e instalar 😋
“Estamos acoplando nuestra aplicación a la capa de la persistencia y nuestro proyecto está construido bajo un enfoque de dominio” Palabras del profe
¿Alguien me apoya explicando un poco mas lo que significa?
Porfa
Profe me puedes dar una explicacion breve del Optional que no lo tengo muy claro aún?
Estoy usando Spring Tool Suite y también esta el plugin en el market, lo pueden buscar como Mapstruct Support 😁👍
¿Que ofrece el patrón Data Mapper?
No expone la DB a la API
Desacopla la API de la DB
Facilita mudar a otro moto de DB
Evita tener campos innecesarios en la API
Ahora entiendo todo, yo la verdad no le veía sentido al mapper, pero con esta explicación ya me hace sentido.
hay algunas cosas a tener en cuenta, no es muy deseable tener variables con el mismo nombre de la clase, adicionalmente es redundante tener en las variables composiciones con el nombre de la clase por ejemplo
public class Category {
private int categoryId; // deberia de llamarse id, ya se sobre entiende que este //campo hace referencia al id de la categoria
private String category; //deberia llamarse name o description
private boolean active;
Nos permite desacoplar la persistencia de la aplicación. Consiste en convertir o traducir varios objetos que pueden cumplir la misma labor. De esta forma podemos:
Si utilizamos los nombres en inglés, entonces no es necesario implementar lo del mapper?
Cordial saludo profe, Avanzamos en el curso pero todavia no ejecutamos el proyecto teniendo en cuenta que envarias partes del codigo no es raro que nos de error a nosotros que estamos aprendiendo pensaria que seria bueno tambien probar el codigo.
- No expone la DB a la API
- Desacopla la API de la DB
- Facilita mudar a otro moto de DB
- Evita tener campos innecesarios en la API
minuto 2 y ya estoy enamorándome de Data Mapper!!!
Estaba navegando y encontré esta imagen, logré entender cuál es la funcionalidad del patrón Data Mapper
Por que en la Entidad es recomendable usar clases para lso tipos de las propiedades como Integer para el id, y en dominio si se pueden usar tipos primitivos hay alguna razón en especial?.
otro punto a tener en cuenta es que en la clase product se tiene el campo categoryId y tambien se tiene el campo Category (que tiene intiernamente el campo id), esto a mi parecer es redundante, si voy a mostrar mi categoria completa en los productos no hay necesidad de crear un campo para categoryId
Me gustó cómo explicó el concepto de Data Mapper.
ufff, super este tema de seguridad
Gradle
dependencies {
...
implementation 'org.mapstruct:mapstruct:1.5.3.Final'
annotationProcessor 'org.mapstruct:mapstruct-processor:1.5.3.Final'
}
Maven
...
<properties>
<org.mapstruct.version>1.5.3.Final</org.mapstruct.version>
</properties>
...
<dependencies>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>${org.mapstruct.version}</version>
</dependency>
</dependencies>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source> <!-- depending on your project -->
<target>1.8</target> <!-- depending on your project -->
<annotationProcessorPaths>
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${org.mapstruct.version}</version>
</path>
<!-- other annotation processors -->
</annotationProcessorPaths>
</configuration>
</plugin>
</plugins>
</build>
Esto seria igual a realizar con DTOS ? o el DTO cambia en algo?
Wow, todo lo que se hace actualmente es fascinante
baia baia
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?
o inicia sesión.