Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Arquitectura de Tres Niveles | Fundamentos de Spring Boot
Spring Boot Backend

bookArquitectura de Tres Niveles

Esto se realiza para separar la lógica específica en diferentes clases/paquetes, en lugar de escribir todo en una sola clase.

El orden en que se procesa una solicitud es ControllerServiceRepository. Después de eso, la respuesta se devuelve en orden inverso: Repository -> Service -> Controller. Comenzaremos la implementación con la capa Repository.

Nivel Repository

Esta es la capa más baja, donde recibimos datos procesados de la capa Service y los almacenamos en nuestra base de datos.

Estas clases están marcadas con la anotación @Repository para ser agregadas al contexto de Spring.

Main.java

Main.java

copy
1234
@Repository public class RepositoryLevel { // connect DB }

Ejemplo de uso del repositorio

Nivel de servicio

Aquí es donde ocurre la lógica central de la aplicación. En los servicios, se gestionan o modifican los datos antes de pasarlos a la capa de repositorio.

Para los servicios, se utiliza la anotación @Service, que declara la clase como un service que contiene la lógica de negocio.

Main.java

Main.java

copy
1234567
@Service public class ServiceLevel { public void logic() { //TODO: write business logic } }

Ejemplo de uso del servicio

Nivel de Controlador

Esta capa gestiona la interacción inicial entre el cliente y el servidor. Todas las solicitudes enviadas desde el cliente llegan aquí, y es responsable de recibir los datos proporcionados por el cliente.

Procesa las solicitudes HTTP entrantes y devuelve respuestas HTTP. Los controladores actúan como un "puente" entre el cliente y la lógica de negocio.

En este nivel, existen dos anotaciones utilizadas para designar una clase como controlador:

  • @RestController: Declara una clase como un controlador REST, que gestiona solicitudes HTTP y devuelve datos en formato JSON;

  • @Controller: Declara una clase como un controlador MVC, que gestiona solicitudes y devuelve vistas (por ejemplo, HTML).

Main.java

Main.java

copy
12345678
@Controller public class ControllerLevel { @GetMapping("/root") public String getPage() { return "template"; } }

La anotación @GetMapping especifica la URL para una solicitud determinada. Esto significa que agregamos la ruta especificada /root al dominio, y a cambio, recibimos la página correspondiente.

Ejemplo de uso del controlador

La dependencia de Thymeleaf del video

Aquí está el enlace a la dependencia de Thymeleaf en el repositorio Maven.

¿Pero qué sucede si no sigues este enfoque?

Bueno, técnicamente, nada. Incluso si escribes toda la lógica de negocio en el controlador, te conectas a la base de datos allí y devuelves la respuesta al cliente desde el mismo lugar, todo funcionará igual.

Sin embargo, es poco probable que recuerdes lo que escribiste allí después de unas semanas, porque toda la lógica de la aplicación estará en un solo lugar, lo cual es sumamente inconveniente.

Resumen

La arquitectura de tres capas proporciona una separación clara de responsabilidades entre las capas de controllers, services y repositories, lo que hace que el proceso de desarrollo sea más organizado y fácil de mantener.

Cada capa se centra en su tarea específica, lo que simplifica tanto el flujo de trabajo como la gestión del proyecto.

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 2. Capítulo 5

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Suggested prompts:

Can you explain the main responsibilities of each layer in the three-tier architecture?

How does the data flow between the controller, service, and repository layers?

Why is it important to separate logic into different layers instead of using a single class?

Awesome!

Completion rate improved to 3.45

bookArquitectura de Tres Niveles

Desliza para mostrar el menú

Esto se realiza para separar la lógica específica en diferentes clases/paquetes, en lugar de escribir todo en una sola clase.

El orden en que se procesa una solicitud es ControllerServiceRepository. Después de eso, la respuesta se devuelve en orden inverso: Repository -> Service -> Controller. Comenzaremos la implementación con la capa Repository.

Nivel Repository

Esta es la capa más baja, donde recibimos datos procesados de la capa Service y los almacenamos en nuestra base de datos.

Estas clases están marcadas con la anotación @Repository para ser agregadas al contexto de Spring.

Main.java

Main.java

copy
1234
@Repository public class RepositoryLevel { // connect DB }

Ejemplo de uso del repositorio

Nivel de servicio

Aquí es donde ocurre la lógica central de la aplicación. En los servicios, se gestionan o modifican los datos antes de pasarlos a la capa de repositorio.

Para los servicios, se utiliza la anotación @Service, que declara la clase como un service que contiene la lógica de negocio.

Main.java

Main.java

copy
1234567
@Service public class ServiceLevel { public void logic() { //TODO: write business logic } }

Ejemplo de uso del servicio

Nivel de Controlador

Esta capa gestiona la interacción inicial entre el cliente y el servidor. Todas las solicitudes enviadas desde el cliente llegan aquí, y es responsable de recibir los datos proporcionados por el cliente.

Procesa las solicitudes HTTP entrantes y devuelve respuestas HTTP. Los controladores actúan como un "puente" entre el cliente y la lógica de negocio.

En este nivel, existen dos anotaciones utilizadas para designar una clase como controlador:

  • @RestController: Declara una clase como un controlador REST, que gestiona solicitudes HTTP y devuelve datos en formato JSON;

  • @Controller: Declara una clase como un controlador MVC, que gestiona solicitudes y devuelve vistas (por ejemplo, HTML).

Main.java

Main.java

copy
12345678
@Controller public class ControllerLevel { @GetMapping("/root") public String getPage() { return "template"; } }

La anotación @GetMapping especifica la URL para una solicitud determinada. Esto significa que agregamos la ruta especificada /root al dominio, y a cambio, recibimos la página correspondiente.

Ejemplo de uso del controlador

La dependencia de Thymeleaf del video

Aquí está el enlace a la dependencia de Thymeleaf en el repositorio Maven.

¿Pero qué sucede si no sigues este enfoque?

Bueno, técnicamente, nada. Incluso si escribes toda la lógica de negocio en el controlador, te conectas a la base de datos allí y devuelves la respuesta al cliente desde el mismo lugar, todo funcionará igual.

Sin embargo, es poco probable que recuerdes lo que escribiste allí después de unas semanas, porque toda la lógica de la aplicación estará en un solo lugar, lo cual es sumamente inconveniente.

Resumen

La arquitectura de tres capas proporciona una separación clara de responsabilidades entre las capas de controllers, services y repositories, lo que hace que el proceso de desarrollo sea más organizado y fácil de mantener.

Cada capa se centra en su tarea específica, lo que simplifica tanto el flujo de trabajo como la gestión del proyecto.

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 2. Capítulo 5
some-alt