Almacenar consulta а-ля основывают datos en una lista estática Java

танго ООН problema обманное ми aplicacion, pues veran estos мето-DOS que les pase la idea es que la consulta sql se almacene en una lista en el metodo № 1 (guardarregistro) para luego en el metodo existeidetificacion recorrer la lista y verificar si coinciden los registros, параграф por истекшего месяца подставляет el metodo de validar utilizarlo ООН Комо ajax. Танто El problema es que creo que no se esta almacenando nada en la lista por lo Лос мето-DOS демов quedan inservibles.

Esta es la clase y la lista estática:

public class PersonaRepositorio {

    private static List<Persona> listaPersonas = new ArrayList<Persona>();

Método 1:

public List<Persona> guardarRegistro(){


        try {
            String consulta = "SELECT IDCLIENTE, NOMBRE, APELLIDO, TELEFONO, DIRECCION, MATRICULA, ESTADO,IDENTIFICACION "
                    + "FROM PERSONA";
            PreparedStatement sentencia = Conexion.getConexion().prepareStatement(consulta);

            ResultSet resultSet = sentencia.executeQuery();
            while(resultSet.next()){
                Persona persona = new Persona();
                persona.setIdCliente(resultSet.getInt("IDCLIENTE"));
                persona.setNombre(resultSet.getString("NOMBRE"));
                persona.setApellido(resultSet.getString("APELLIDO"));
                persona.setTelefono(resultSet.getString("TELEFONO"));
                persona.setDireccion(resultSet.getString("DIRECCION"));
                persona.setMatricula(resultSet.getString("MATRICULA"));
                persona.setEstado(resultSet.getString("ESTADO"));
                persona.setIdentificacion(resultSet.getString("IDENTIFICACION"));
                listaPersonas.add(persona);
            }
        } 
        catch (Exception e) {
            System.out.println(e.getMessage());
        }
        return listaPersonas;
    }

Además ocupo agregar la lista estática en este método pero никакой estoy seguro СИ esta bien:

public static boolean existeIdentificacion(String identificacion){


    return listaPersonas.stream().
        anyMatch((persona) -> (persona.getIdentificacion().equals(identificacion)));
}



public class Ingresar extends Persona {


      public void validar(){

        String identificacion = this.getIdentificacion();
        if(PersonaRepositorio.existeIdentificacion(identificacion)){
            this.mensajeIdentificacion = "Identificación ya existe";
            this.bloquearBoton = true;
        }
        else{
            this.bloquearBoton = false;
        }
    }
0
задан 17.12.2019, 19:31
1 ответ

Если то, к чему ты стремишься, состоит в том, чтобы консультировать в algГєn момент, если пользователь этот logado или нет, лучшее состоит в том, чтобы ты пошел прямо на основе данных спрашивая из-за этого пользователя, вместо того, чтобы весь промежуток времени поддерживая список в памяти. С другой стороны также это не хорошая идея иметь этот список как estГЎtica. Так же как ты имеешь cГіdigo в этих моментах, если у тебя есть два пользователя logados каждый раз, когда ты сохранял реестр estarГЎs aГ±adiendo снова эти два пользователя, так как ты не делаешь ни одной comprobaciГіn из, если существует или нет этот пользователь.

не, что ты реализуешь тип gestiГіn со связью, но он дает весь мне она impresiГіn, которого ты estГЎs оставляя ее conexiГіn открытая, и это может быть большой проблемой. Такие

Как ты я говорю для меня, что лучшая opciГіn состоит в том, чтобы забывать поддержать список и в existe identificaciГіn делать следующую консультацию:

private static final String CONSULTA = "select count(*) from PERSONA where IDENTIFICACION = ?";

public static boolean existeIdentificacion(String identificacion){

    Connection con = null;
    int records = 0;
    try {
        con = Conexion.getConexion();
        final PreparedStatement sentencia = con.prepareStatement(CONSULTA);
        sentencia.setString(1, identificacion);
        final ResultSet resultSet = sentencia.executeQuery();
        if (resultSet.next()){
            records = rs.getInt(1);
        }
    }catch(Exception e){
        // Hacer lo que sea con la excepción 
    }finally {
        if (con != null){
            con.close();
        }
    }

    // Si existe un registro devolverá true también podría valer result > 0
    return result == 1; 
}

я не смог подтверждать cГіdigo, что я поместил тебя, но думаю, что он может стоить тебе.

С этим mГ©todo ты консультируешься прямо в базе данных, если существует или нет пользователь, и предотвращаешь головные боли того, чтобы быть mateniendo списку в памяти, которая зависит от количества пользователей, может удаваться занять много, и ademГЎs смоги давать место в ошибки.

0
ответ дан 21.12.2019, 12:14