No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de Java Spring

Curso de Java Spring

Alejandro Ramírez

Alejandro Ramírez

Crear la estructura del proyecto

9/35
Recursos

Aportes 22

Preguntas 17

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Para el perezoso: mkdir -p domain/{dto,repository,service} persistance/{entity,crud} web/controller

.
├── paltzi-market.iml
├── pom.xml
├── src
│   ├── main
│   │   ├── java
│   │   │   └── com
│   │   │       └── platzi
│   │   │           └── market
│   │   │               ├── domain
│   │   │               │   ├── dto
│   │   │               │   ├── repository
│   │   │               │   └── service
│   │   │               ├── PaltziMarketApplication.java
│   │   │               ├── persistance
│   │   │               │   ├── crud
│   │   │               │   └── entity
│   │   │               └── web
│   │   │                   └── controller
│   │   └── resources
│   │       ├── application.properties
│   │       ├── application.yaml
│   │       ├── keystore
│   │       │   └── rtc4j.p12
│   │       ├── static
│   │       └── templates
│   └── test
│       └── java
│           └── com
│               └── platzi
│                   └── market
│                       └── PaltziMarketApplicationTests.java

La estructura del proyecto será de la siguiente manera:

1. DOMINIO:

  • DTO y objetos del dominio (Contexto de la aplicación)
  • Servicios: Puente entre los controladores y la capa de persistencia.
  • Especificación de repositorios: Interfaces que determinan las reglas que debe cumplir la persistencia para actuar entre los objetos de dominio y la DB.

2. WEB:

  • Controladores de API Rest.

3. PERSISTENCIA:

  • Repositorios: Implementan las especificaciones que tiene la capa de DOMINIO.
  • Entities: Mapean y actúan como tablas de la DB.

Seria bueno mencionar :
Al realizar creaciones de paquetes estas deben estar por debajo de la clase donde se encuentre nuestro main (@SpringBootApplication), PORQUE, ya que spring scanea desde ese punto hacia abajo por defecto, de lo contrario se tendra que emncionar en esa mima clase la ruta que scaneara.

Proyecto por capas orientado al dominio

  • Dominio -> DTO, Servicios, Definicion repositorios
  • Web -> Controladores API
  • Persistencia -> implementacion de repositorios

Es similar a la estructura “Clean Arquitecture” donde las capas son:

  • Domain
  • Presentation
  • Data

La arquitectura usada para este proyecto es por capas y orientada al dominio.

Wow, este profe explica muy bien

Gracias, sigamos aprendiendo

¿Como se llama esa estructura del proyecto?

DTO % objetos de dominio → Son objetos que hacen parte del contexto de la aplicación, en el caso de ejemplo seria el mercado.

Servicios → Son los encargados que sirven como puente entre los controladores de la api y la capa de persistencia o el repositorio.

Especificación de repositorios → Interfaces que definen las reglas del juego de los contratos que ha de cumplir la persistencia para intervenir entre los objetos de dominio y la base de datos.

WEB → controladores de la API.

PERSISTENCIA → Es la capa que tiene la obligación de interactuar con la base de datos, donde estaran los repositorios y los entities que son las clases que mapean y hacen las veces de las tablas que estan en la base de datos.

Entonces, de acuerdo a lo que expone el profesor el modelo resumido de funcionamiento de nuestra api será así:

Pido me corrijan con confianza 😃

Wow vamos bastante bien, buena explicación por parte del profesor

Para mí eso es tecnología.

Muy buenas practicas, que bueno!

EXCELENTE PROFESOR

estructura del proyecto
por capas orientadas al dominio.
DTO y objetos de dominio: contexto de la APP
Servicio: es el puente entre controladores de la API y la persistencia del repositorio quien es la que interviene con la base de datos.
Especificacion de los repositorio: interfaces que establecen las reglas que debe cumplir la persistencia con la base de datos.
capa web estan los controladores de API.
capa de persistencia tiene la obligacion de interactuar con la base de datos. alli estan los repositorios y las entidades, los entities son los que hacen de tablas que estan en nuestra base de datos.

Considero que el controlador es más genérico que un controlador web. La aplicación también podría correr en CLI y estar dentro de un paquete CLI, junto con el Web. Por ello, sugeriría cambiar el paquete base a “Controller” y dentro de el “Web”

El profe menciona algo muy interesantes y es programación reactiva, que chévere que se diera un curso sobre esto, en base a este proyecto, usando r2dbc y/o alguna base de datos de AWS, seria interesante ver los cambios java 11 vs java 17.
A medida que se va avanzando en el mundo del software, llegan mejores Arquitecturas Limpias. Les propongo que vayan por el camino "Hexagonal" con 4 carpetas ![](https://static.platzi.com/media/user_upload/Screenshot%202023-12-14%20at%209.44.41%E2%80%AFPM-bf1de18d-bf88-49e5-9cc1-1f63ccf91f76.jpg) Donde: **Presenters:** tendra todos los controllers basicamente nuestros endpoints y DTOs con los que se puedan consumir la app en caso de ser un servicio REST en caso de instanciado por un message pattern entonces ese seria el lugar **Application:** es donde estaran los servicios, nuestro CQRS, nuestra comunicacion con la infrastructura, etc **Domain:** Aqui estarian todos los modelos que contemple el negocio **Infrastructure:** Aqui estaria nuestras entidades, nuestros repositorios, nuestras conexiones a servicios externos ya sea una BD o una API de tercero, nuestros mappers que traducen la data que se insertara y cuando se consulte la data que deberia retornar
En mi experiencia, tengo entendido que los DTOs para este proyecto deberían ser los objetos utilizados para mappearse con los objetos Entity. Pero veo que en la carpeta DTO solo se mencionó al momento de crear la estructura del proyecto y para hacer el mapeo con las entidades se utilizan otras clases. No me quedó claro por qué no se utilizaron los DTOs para tal fin. Los DTOs son los objetos que se deben utilizar para transportar la información desde la persistencia hacia el exterior (Data Transfer Object)

Me encantó esta clase🙌

excelente muy buena clase !!!