Buenas culminando con el capítulo 5 - Capa de Persistena de DAO del curso de Java y JDBC: Trabajando con una base de datos
Me di cuenta que al implementar el DAO no podía realizar ninguna transacción es decir comenzaba a correr la aplicación y listaba los productos pero luego cuando quería agregar, modificar o eliminar me arrojaba el siguiente error.
Entonces comencé a releer el código y vi el siguiente fragmento en el constructor de ControlDeStockFrame:
public ControlDeStockFrame() {
super("Productos");
this.categoriaController = new CategoriaController();
this.productoController = new ProductoController();
Container container = getContentPane();
setLayout(null);
configurarCamposDelFormulario(container);
configurarTablaDeContenido(container);
configurarAccionesDelFormulario();
}
De repente me equivoco, sin embargo, creo que al inicializar el productoController en el constructor tanto el método modificar, cargar, listar o eliminar usan la misma conexión a la base de datos, y al iniciar la aplicación el método Listar comienza a ejecutarse y al terminar cierra la conexión y luego esta ya no es abierta por ningun otro método. La manera que encontré de solucionarlo es en cada inicio del método volver a iniciar el ProductoController:
// Método modificar de ControlDeStockFrame
private void modificar() {
this.productoController = new ProductoController();
...
}
// Método eliminar de ControlDeStockFrame
private void eliminar() {
this.productoController = new ProductoController();
...
}
// Método cargarTabla de ControlDeStockFrame
private void cargarTabla() {
this.productoController = new ProductoController();
...
}
// Método guardar de ControlDeStockFrame
private void guardar() {
this.productoController = new ProductoController();
....
}
Quisiera saber si hay una mejor manera de resolver este inconveniente.