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 23

Preguntas 15

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

馃 Hay una manera m谩s 谩gil de crear los paquetes en IntelliJ sin la necesidad de usar el mouse. Esto les puede ser 煤til en el futuro. 馃 Pero requiere una configuraci贸n extra. 馃憖

Lo primero que hay que hacer es ir a 鈥淪ettings -> keymap鈥 y buscan la opci贸n Navigate.

Si no les funciona, pueden agregar una nueva entrada dandole click derecho.

Si como yo est谩n usando un teclado en espa帽ol les recomiendo colocar una nueva entrada con la 帽.

No olviden darle click en 鈥楢plicar鈥.

El siguiente paso es el shortcut de crear un nuevo archivo. Para esto igual se van a 鈥楽ettings -> keymap鈥 y buscan file.

En mi caso volv铆 a usar la 脩.

No olviden darle en 鈥楢pply鈥. 馃憖

Por 煤ltimo hacemos esto mismo pero con el atajo de crear paquetes.

Damos 鈥楢pply鈥 馃憖

Y listo, ahora pueden usar ambos para crear nuevos archivos y paquetes sin necesidad de usar el mouse. 馃榾

Simplemente navegamos a donde queremos agregarlo. (Alt + 脩 )

Y despu茅s creamos el paquete. (Shift + 脩)

Todo esto lo aprend铆 en un webinar de Jetbrains, lo pueden ver aqu铆:

https://youtu.be/x8y_6Gg28GI?t=780

Espero que a alguien le sea de utilidad. 馃 馃殌 馃挌

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 鈥淐lean Arquitecture鈥 donde las capas son:

  • Domain
  • Presentation
  • Data

Wow, este profe explica muy bien

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

Gracias, sigamos aprendiendo

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.

驴Como se llama esa estructura del proyecto?

Para m铆 eso es tecnolog铆a.

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

Pido me corrijan con confianza 馃槂

Muy buenas practicas, que bueno!

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

EXCELENTE PROFESOR

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)
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.

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.

Me encant贸 esta clase馃檶

excelente muy buena clase !!!

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 鈥淐ontroller鈥 y dentro de el 鈥淲eb鈥