¿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!
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.
Si, estoy de acuerdo, ese tipo de "errores" no deberían cometerse en un curso de este nivel.
Pense que era el unico que pensaba eso, porque contradice hasta lo enseñado en los primeros cursos jajaja.
Un saludo para todas las personas que ven este video, actualicé el proyecto en mi repositorio de github con buenas prácticas.
Super profe, la clase para mi es clara. Eso es muy importante.
¡Gracias por tomarse el tiempo en actualizar el proyecto! ¿Por qué no actualizan este curso con las nuevas prácticas y quizás entrando en mayor detalle para la persistencias de datos SQL y noSQL, trabajando con Intellij para esta ocasión, Docker y quizás un despliegue en AWS? Considero que podemos aprender mucho de usted, Santiago, explica muy bien, lo único regular del curso son las malas prácticas como los antipatrones, fuera de eso, he entendido mucho y al igual, aprendido. ¡Gracias!
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í.
Es un proceso evolutivo y esto hace parte de repaso para afianzar conocimiento. Hay estudiantes que no tienen las cosas tan claras como tu... Tolerancia ;)
Siempre eres bienvenido a ir a la sección de Archivos y Enlaces para descargar partes del código donde tu no necesites explicación.
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.
Toda la razón, sin embargo para las personas que tenemos poca experiencia es algo confuso.
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.
Esto es lo que el prof explico sobre las capas:
!img
Rayos por que no encapsulo :|
En general el profe tiene algunas malas práctica
Pense exactamente lo mismo, incluso yo si encapsule porque sino cual seria el sentido de los getter y setter, hay que hacer el trabajo completo no a medias.
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
Tal como lo dices. Yo viendo por alternativas de XAMPP descubrí Docker y MySQL Workbench. Nunca parar de aprender.
pregunta porque no nos dan el curso de persistencia de datos con jpa y hibernate en vez de estar usando jdbc
hace falta la neta.
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. :)
¿Por qué al crear la clase 'mensajesService' no se sigue la convención UpperCamelCase para nombres de clase? :thinking:
Tienes razón, seguro fue un error al nombrar el archivo y la clase. Por favor usa la convención CamelCase y gracias por comentar!.
jajaja lo mismo me pregunte pero asumi que fue un error del profe
Comparto este video explicando el DAO (Data Access Object), importante para comprender la logica de la aplicacion:
El patrón DAO (Data Access Object). Manteniendo la persistencia de datos
excelente material profe, gracias :)
Hubiese sido mejor meter el código del Menú en otra clase para que se vea más ordenado el código, le faltó aplicar “sout” para reducir tiempo a la hora de codificar, y algunas malas prácticas más.
me intriga eso que dices del "sout" sería interesante que explicaras sobre eso. tal vez algunas referencias.
El curso es fácil de entender, siempre hay problemas al momento de preparar el entorno de desarrollo como en las clases anteriores, pero es un reto que todos deberíamos de tomar para solucionar futuros problemas de nuestras empresas.
Excelente clase
No comprendo porque crear un constructor vacío y otro con los campos, y utilizando el mismo nombre, eso no generará conflicto?
Se le llama sobrecargar de constructores, en sí no genera conflicto y el constructor vacío se usaría cuando quieras crear una instancia, pero luego los valores de las propiedades los obtendrás de diferentes formas.
Muchas gracias por la aclaración @Luis_LiraC
el curso bien pero siguiendo con la anatomia de los otros cursos le falto utilizar interfaces para el CRUD en el archivo DAO o clase abstract no se se hizo a como clase de Universidad.
En lo personal, me gusta mucho este curso por que es claro y complementa de forma práctica el conocimiento adquirido en otro cursos, ahora entiendo más sobre la funcionalidad del Beckend.
Veo varios comentarios con opiniones negativas sobre el curso o el instructor, estan bien sus aportes y hasta creo que tienen razon en la mayoria de argumentos, pero para quienes estan leyendo estos comentarios les sugiero que los ignoren y continuen con el curso, esta genial y he aprendido mucho, de seguro les aportara mucho en su carrera profesional, muchas gracias al profesor por su excelente trabajo, cierto, alguna que otra cosa que mejorar, como todos, pero estoy muy satisfecho, gracias.