Hola Buenas Días, Tardes o Noches.
Me encontraba realizando la practica del video pero a la hora de ejecutar el código me mandaba muchas llamadas a la base pero no pude encontrar el error me pueden ayudar porfavor .
Hola Buenas Días, Tardes o Noches.
Me encontraba realizando la practica del video pero a la hora de ejecutar el código me mandaba muchas llamadas a la base pero no pude encontrar el error me pueden ayudar porfavor .
Hola Jorge,
El problema de las consultas N + 1 ocurre cuando, para una funcionalidad específica, se realizan más consultas a la base de datos de las que son necesarias.
En tu caso, estás yendo a la base de datos cada vez que llamas al método cargarReporte
que llama al método listar
de CategoriaDAO
y también cada vez que llamas al método listarPorCategoria
de ProductoDAO
. Esto significa que para cada categoría que estás procesando en el bucle for
, estás yendo a la base de datos de productos para hacer esta búsqueda. En tu escenario, estás haciendo cinco conexiones a la base de datos.
Una solución a este problema sería aprovechar la relación que existe entre las entidades de Categoría y Producto. En lugar de hacer una consulta a la base de datos para cada categoría y luego otra consulta para cada producto de esa categoría, podrías hacer una sola consulta que obtenga todas las categorías y sus productos correspondientes. Esto reduciría significativamente el número de consultas a la base de datos.
Por ejemplo, podrías modificar tu consulta SQL para que se vea algo así:
String query = "SELECT c.ID, c.NOMBRE, p.ID, p.NOMBRE, p.DESCRIPCIÓN, p.CANTIDAD " +
"FROM CATEGORIA c " +
"JOIN PRODUCTO p ON c.ID = p.CATEGORIA_ID";
Esta consulta obtendría todas las categorías y productos en una sola consulta. Luego podrías procesar los resultados en tu aplicación para organizarlos en la estructura que necesitas.
Espero que esto te ayude a entender y resolver el problema. Recuerda que esta es solo una sugerencia y puede que necesites adaptarla a tus necesidades específicas.
Mucho éxito en todo lo que te propongas y si tienes alguna duda aquí estaremos para apoyarte.
¡Vamos juntos!
Gracias me ayudo mucho. Excelente día.