¿Cómo construir una estructura de capas en una aplicación?
La creación de una estructura organizada en capas en el Back-end de una aplicación es fundamental para gestionar la interacción con la base de datos, especialmente en aplicaciones complejas donde la separación de responsabilidades es crucial. Aquí exploraremos cómo construir estas capas y clases de manera efectiva.
¿Cuál es el papel de cada capa?
Capa de Acceso a Datos (DAO): Esta es la encargada de conectar con la base de datos y ejecutar las operaciones necesarias.
publicclassMensajesDAO{publicvoidcrearMensajeDB(Mensaje mensaje){// Implementación de creación en base de datos}publicvoidleerMensajes(){// Implementación para leer mensajes de la base de datos}publicvoidborrarMensajeDB(int mensajeId){// Implementación para borrar un mensaje}publicvoidactualizarMensajeDB(Mensaje mensaje){// Implementación para actualizar un mensaje}}
Capa de Servicios: Funciona como intermediaria entre el menú principal y la capa de acceso a datos, facilitando la comunicación y el flujo de información.
publicclassMensajesService{publicvoidcrearMensaje(){// Código para crear un nuevo mensaje}publicvoidlistarMensajes(){// Código para listar todos los mensajes}publicvoidborrarMensaje(){// Código para borrar un mensaje}publicvoideditarMensaje(){// Código para editar un mensaje}}
Modelo de Datos: Representa la estructura de los datos que se manejan en la aplicación.
La clase de Inicio es donde se ejecuta el proyecto y se configura el menú para que interactúe con las capas previamente establecidas. Para leer los datos desde la consola, se utiliza la clase Scanner, un componente clave para la interacción del usuario.
El flujo de información se gestiona a través de las capas, donde cada nivel tiene un rol específico:
Mensajes Ingresados por el Usuario: Se envían desde la interfaz de usuario (menú) a través de la capa de servicios.
Gestión de Datos: La capa de servicios procesa los datos y delega a la capa de acceso a base de datos (DAO), que finalmente interactúa con la base de datos.
Respuesta al Usuario: Los resultados de las operaciones, ya sea una lista de mensajes o confirmaciones de acciones, se muestran al usuario desde la capa de servicios hasta el frontend.
Este enfoque no solo organiza el código, sino que también simplifica el mantenimiento y la escalabilidad del proyecto. Con esta estructura, estás listo para avanzar en el desarrollo de aplicaciones robustas y efectivas. ¡Continúa con tu aprendizaje y sigue explorando las distintas técnicas que te ofrece el mundo del desarrollo de software!
¿Cómo construir una estructura de capas en una aplicación?
La creación de una estructura organizada en capas en el Back-end de una aplicación es fundamental para gestionar la interacción con la base de datos, especialmente en aplicaciones complejas donde la separación de responsabilidades es crucial. Aquí exploraremos cómo construir estas capas y clases de manera efectiva.
¿Cuál es el papel de cada capa?
Capa de Acceso a Datos (DAO): Esta es la encargada de conectar con la base de datos y ejecutar las operaciones necesarias.
public class MensajesDAO {
public void crearMensajeDB(Mensaje mensaje) {
// Implementación de creación en base de datos
}
public void leerMensajes() {
// Implementación para leer mensajes de la base de datos
}
public void borrarMensajeDB(int mensajeId) {
// Implementación para borrar un mensaje
}
public void actualizarMensajeDB(Mensaje mensaje) {
// Implementación para actualizar un mensaje
}
}
Capa de Servicios: Funciona como intermediaria entre el menú principal y la capa de acceso a datos, facilitando la comunicación y el flujo de información.
public class MensajesService {
public void crearMensaje() {
// Código para crear un nuevo mensaje
}
public void listarMensajes() {
// Código para listar todos los mensajes
}
public void borrarMensaje() {
// Código para borrar un mensaje
}
public void editarMensaje() {
// Código para editar un mensaje
}
}
Modelo de Datos: Representa la estructura de los datos que se manejan en la aplicación.
public class Mensaje {
private int id;
private String mensaje;
private String autorMensaje;
private String fecha;
// Getters y Setters
public Mensaje(int id, String mensaje, String autorMensaje, String fecha) {
this.id = id;
this.mensaje = mensaje;
this.autorMensaje = autorMensaje;
this.fecha = fecha;
}
}
¿Cómo se estructura el menú y las opciones?
La clase de Inicio es donde se ejecuta el proyecto y se configura el menú para que interactúe con las capas previamente establecidas. Para leer los datos desde la consola, se utiliza la clase Scanner, un componente clave para la interacción del usuario.
import java.util.Scanner;
public class Inicio {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int opcion = 0;
do {
System.out.println("Aplicación de Mensajes");
System.out.println("1. Crear mensaje");
System.out.println("2. Listar mensajes");
System.out.println("3. Editar mensaje");
System.out.println("4. Eliminar mensaje");
System.out.println("5. Salir");
opcion = scanner.nextInt();
switch (opcion) {
case 1:
MensajesService.crearMensaje();
break;
case 2:
MensajesService.listarMensajes();
break;
case 3:
MensajesService.editarMensaje();
break;
case 4:
MensajesService.borrarMensaje();
break;
case 5:
System.out.println("Saliendo...");
break;
default:
System.out.println("Opción no válida");
}
} while (opcion != 5);
scanner.close();
}
}
¿Cómo se implementa el flujo de información?
El flujo de información se gestiona a través de las capas, donde cada nivel tiene un rol específico:
Mensajes Ingresados por el Usuario: Se envían desde la interfaz de usuario (menú) a través de la capa de servicios.
Gestión de Datos: La capa de servicios procesa los datos y delega a la capa de acceso a base de datos (DAO), que finalmente interactúa con la base de datos.
Respuesta al Usuario: Los resultados de las operaciones, ya sea una lista de mensajes o confirmaciones de acciones, se muestran al usuario desde la capa de servicios hasta el frontend.
Este enfoque no solo organiza el código, sino que también simplifica el mantenimiento y la escalabilidad del proyecto. Con esta estructura, estás listo para avanzar en el desarrollo de aplicaciones robustas y efectivas. ¡Continúa con tu aprendizaje y sigue explorando las distintas técnicas que te ofrece el mundo del desarrollo de software!
Santiago emplea anti-patrones que no deberían enseñarse:
Caracteres espaciales como _ en el nombre de paquetes
Spanglish.
Nombre de clases en plural.
Para aquellos con poca o cero experiencia, esas cosas no son obvias y pueden viciarse desde muy temprano, dificultando deshacerse de tan malas costumbres.
Estar viendo en directo como se hace un menú de consoloa en Java en un curso que se llama "SE Persistencia de Datos" acaba de completar el tiempo que tengo para perder en un día.
No sé porqué hay que ver en "tiempo real" como un profesor teclea el código. Si lo presentan ya escrito pueden centrarse en enseñar el funcionamiento, no en pasar los minutos haciendo typos. Bueno igual soy yo solo que opina así.
Debe dar mucho gusto a los tutores ver como muchos de los comentarios indican las malas prácticas de la implementación. Eso quiere decir que aprendieron bien de los cursos enfocados en ese fin.
Este curso habla de persistencia de datos y la clase en particular habla del flujo y la lógica de la aplicación, el cual está muy bien definido y explicado. Una capa del modelo de datos, otra para acceso a los datos, otra para el manejo del servicio y por último la capa de presentación.
No está mal que se cometan errores en lo que no tiene trascendencia, ya que evidenciarlos es otra forma de aprender. Pero al hacerlo en esta sesión de aportes, la intención debería estar enfocada en guiar el aprendizaje de los que no lo notaron, mas no en criticar al tutor.
Independiente a lo que varias personas han comentado (incluso con tintes despectivos sobre los métodos de Santiago), siento que aprendí algo importante respecto a la separación de responsabilidades mediante las capas DAO, Service y Model .
También creo que debo agradecer a esas personas que, con intención pedagógica, hicieron notar los errores. Como decía uno de los comentarios anteriores: Es bueno ver el vaso medio lleno y aprender de ellos para no cometerlos, sin necesidad de levantar juicios que sencillamente no aportan mucho.
Creo que siempre debemos hacer cualquier retroalimentación o crítica de manera constructiva. En mi caso trabajo con Java desde 1999 y no me importa codificar un poco y aprender diferentes opciones, alternativas y herramientas. Normalmente utilizo **git **desde consola; pero me pareció interesante usar el Sourcetree y vincularlo con mi repo Gitlab.
Que acaso de eso no se trata compañeros De nunca para de aprender...?Muchas gracias
Yo también fui de los que perdí tiempo y mucho en la clase anterior y no pude solucionar mi problema. Mi decisión antes de terminar de enojarme, fue seguir avanzando y si me trabo en cosas que no tienen que ver con la persistencia de datos, lo hago a un costado. Es cierto que no se respetan ciertas practicas pero en esta clase lo que el profesor dice que va a explicar y como lo explica (código), me parece bastante claro. Ya vengo con varios cursos de programación y me puedo dar cuenta de esos pequeños "errores" o malas prácticas por así decirlo, pero tampoco es para ponerse mal. Si estás leyendo esto, tranquilo y te invito a seguir aprendiendo. Es muy fácil dejarse influenciar por los comentarios antes de ver el vídeo y empezarlo "mal predispuesto". Avanzá, aprendé lo que puedas, aprobá el curso y quedate con lo que sí te sirvió. Si hay algo que no te quedo claro, sale aprenderlo de otra manera. :)