Hola, tengo una duda, en esta parte faltó cerrar la conexion a la BBDD, ¿no? Pues no se cierra con con.close() ni con un try-with-resources para la connection con.
public class CategoriaDAO {
private Connection con;
public CategoriaDAO(Connection con) {
this.con = con;
}
public List<Categoria> listar() {
List<Categoria> resultado = new ArrayList<>();
try {
final PreparedStatement statement = con.prepareStatement(
"SELECT ID, NOMBRE FROM categoria");
try(statement){
final ResultSet resultSet = statement.executeQuery();
try (resultSet) {
while(resultSet.next()) {
var categoria = new Categoria(resultSet.getInt("ID"),
resultSet.getString("NOMBRE"));
resultado.add(categoria);
}
};
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
return resultado;
}