Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Hasta acá sino me equivoco es innecesaria la Conexión que recibe el constructor de ProductoDAO.

En cada uno de los Daos se abre una conexión distinta, elimine el parámetro y el atributo para comprobar y efectivamente, funciona correctamente. Para que se deja?.

public void guardarProducto(Producto producto) {
        Connection con = new ConnectionFactory().recuperaConexion();
        try (con) {
            final PreparedStatement statement = con.prepareStatement(
                    "INSERT INTO PRODUCTO " + "(nombre, descripcion, cantidad)" + " VALUES (?, ?, ?)",
                    Statement.RETURN_GENERATED_KEYS);

            try (statement) {
                ejecutaRegistro(producto, statement);
            }
        } catch (SQLException e) {
            throw new RuntimeException();
        }

    }
1 respuesta

¡Hola Cesar! ¡Deseo que estés bien!

¡Felicitaciones por tu aprendizaje!

En la forma en que esta tu codigo estas abriendo una conexión dentro del metodo por eso te funciono, lo ideal es que quites esa conexión del metodo y la dejes como un atributo de tu clase DAO y recibas la conexion en tu constructor.

Es decir, si tu tienes tu clase DAO que tiene como atributo la coneccion y tu constructor recibe la coneccion; la siguiente instruccion: Connection con = new ConnectionFactory().recuperaConexion(); esta demás debió ser quitada de tu metodo: public void guardarProducto(Producto producto) { posiblemente el instructor olvido retirarla del metodo porque de lo contrario estarias abriendo otra coneccion distinta a la que estas recibiendo en el constructor de tu clase DAO, por tanto para optimizar tu DAO donde se consentran todos tus medotos que accesan a la base de datos como: guardar, modificar, eliminar y listar; te recomiendo quitar la siguiente intruccion: Connection con = new ConnectionFactory().recuperaConexion(); de tu método public void guardarProducto(Producto producto) { y dejalo como atributo de tu clase y recibirla en el constructor.

¡Te deseo mucho éxito en tus estudios! y recuerda que aquí estaremos para apoyarte!

¡Vamos juntos!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios!