No tienes acceso a esta clase

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

Capas y Clases en Java para Gestión de Bases de Datos

10/25
Recursos

¿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?

  1. 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
    }
}
  1. 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
    }
}
  1. 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!

Aportes 42

Preguntas 7

Ordenar por:

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

Santiago emplea anti-patrones que no deberían enseñarse:

  1. Caracteres espaciales como _ en el nombre de paquetes
  2. Spanglish.
  3. 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.

Un saludo para todas las personas que ven este video, actualicé el proyecto en mi repositorio de github con buenas prácticas.

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.

Esto es lo que el prof explico sobre las capas:

Rayos por que no encapsulo 😐

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

pregunta porque no nos dan el curso de persistencia de datos con jpa y hibernate en vez de estar usando jdbc

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

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.

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

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.

Algunos atajos de teclado:
Alt + Shift + S, R
Generar getters setters
Alt + Shift + S, O
Generar constructor

Se que muchos a este punto del curso se estan quejando, aviso que aun no he temrinado el curso y espero seguir teniendo la misma opinion al final. Bien, hasta ahora si he visto cosas que podrian considerarse malas practicas, pero siendo honesto, nada que ver con los cursos de Java Basico y Orientado a objetos, esos cursos de verdad si estaban mal estructurados y al final si se vieron hechos un poco “a la carrera” por la profesora ademas de que algunos videos eran larguisimos, digo, de verla a ella codificando por mas de 20 minutos a ver a Santiago de 5 a 8 pues… Deberian actualizarlos. Santiago al menos esta intentando organizar su codigo y los videos son cortos lo que hace que captes la idea de lo que hace.

DAO := Data Access Object

Dejo esta guía para agregar getters y setters en intellij idea

https://www.jetbrains.com/idea/guide/tips/generate-getters-and-setters/

Algo importante estos temas de persistencia deben implementar la clase Serializable, consúltenlo pata que lo apliquen en sus desarrollos.

Propongo la siguiente estructura para el desarrollo del proyecto:

.
└── .../com/mycompany/app
    ├── App.java		# main
    ├── connections	# .db connection related
    │   └── MyConnection.java
    ├── messages		# messaging service related
    │   ├── MessageDAO.java
    │   ├── Message.java
    │   └── MessageService.java
    ├── pmethods		# general funcs
    │   └── SleepTime.java
    └── ui				# user interface
        └── UIMenu.java

5 directories, 7 files

Es una pena que solo explique las partes de configuracion para un solo Sistema operativo, lo que no usamos Apple nos toco buscarnos la vida solos

Bueno, muy bien explicados pero con errores como dicen los compañeros abajo, algo que no se deberia aceptar en este tipo de cursos y de alguien con experiencia xD. Pero todo quedo muy claro.

Todo bien hasta ahora, solo que en el model debimos usar CamelCase para los nombres de los atributos.
hola, existe un bug cuando pasas de pantalla completa a una ventana de menor tamaño, pues aparece la opción de recursos. Saludos.

El 5 también puede ser 0, todo depende de lo que le preguntemos al user mediante los “inputs”.

No se, pero el profesor está usando malas prácticas en la programación, las clases las pone en plural, combina caracteres especiales como _ en nombre de paquetes, usa programación orientada a objetos y no encapsula los atributos de la clase, sin embargo este es un curso de persistencia de datos y en esta clase se aprende como aplicar DAO (Data Access Object), importante para comprender la logica de la aplicación, dejando las malas prácticas atrás, esta clase en relación a la persistencia de datos va bien.

Y las buenas practicas?

Buena introducción a lo que será el meollo del asunto en el curso.

Me agrado bastante la manera de dividir la aplicación en varias capas y establecer al inicio todos los métodos que involucrara, muchas gracias por la clase instructor Santiago.

O-O y porque en clase mensajes, los atributos como default ? o.o

java.sql.SQLException: The server time zone value ‘unknown’ is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the ‘serverTimezone’

me presenta este error no he podido repararlo, gracias ?

Listo 😃

me gustor arto esta clase 😄

Senti que el profesor no explico bien el concepto de DAO, por eso les dejo aqui el link a una pagina el Wikipedia

No se mucho de buenas practicas ya que soy nuevo en Java, pero vi este post y me parecio interesante: https://sites.google.com/site/edmundoogaz/buenas-practicas-java

Agregar que se comete un error al momento de asignar los métodos de editar y eliminar al menú de la clase Inicio.java
Básicamente se agregaron invertidos, min 11:57
Saludos

Me emociono que por fin llegué a persistencia.