Como filtrar objetos en una base de datos DB4O

Hola a todos, hoy os voy a explicar como filtrar datos en una base de datos DB4O con db4o.jar.

DB4O es una base de datos orientada a objetos en un fichero, algo parecido a como es SQL Lite pero sin ser orientado a objetos.

Lo primero que necesitarás es el JAR de DB4O, podéis agregar la dependencia en apache netbeans. Aquí lo puedes descargar.

Como agregar dependencias en Apache Netbeans

Vamos a usar la clase Persona para la base de datos:


public class Persona {

    private String nombre;
    private int edad;
    private double peso;
    private double altura;

    public Persona() {
    }

    public Persona(String nombre, int edad, double peso, double altura) {
        this.nombre = nombre;
        this.edad = edad;
        this.peso = peso;
        this.altura = altura;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public int getEdad() {
        return edad;
    }

    public void setEdad(int edad) {
        this.edad = edad;
    }

    public double getPeso() {
        return peso;
    }

    public void setPeso(double peso) {
        this.peso = peso;
    }

    public double getAltura() {
        return altura;
    }

    public void setAltura(double altura) {
        this.altura = altura;
    }

    @Override
    public String toString() {
        return "Persona{" + "nombre=" + nombre + ", edad=" + edad + ", peso=" + peso + ", altura=" + altura + '}';
    }

}

Lo primero que tenemos que hacer es crear la conexión con DB4O:

// Creamos la conexión
ObjectContainer db = Db4oEmbedded.openFile("personas.db4o");

Para filtrar objetos con DB4O necesitamos un objeto de ejemplo para que lo filtre por ello. Vamos a ver varios ejemplos.

Si quisiéramos mostrar todos los objetos de una base de datos:


// Todas las personas
Persona p = new Persona();
ObjectSet<Persona> result = db.queryByExample(p);

System.out.println("Todas las personas");
while (result.hasNext()) {
    System.out.println(result.next());
}

Mandando un objeto vacio es suficiente.

Resultado:

Si queremos filtrar por un atributo en concreto, tendremos que darle valor a ese atributo en concreto:


// Todas las personas con la edad de 30
p = new Persona(null, 30, 0, 0);
result = db.queryByExample(p);

System.out.println("Personas con 30 años");
while (result.hasNext()) {
    System.out.println(result.next());
}

También vale si se le da valor a un atributo en concreto.

Resultado:

Si fueran dos parámetros, lo haríamos así:


// Todas las personas con la edad de 30 y 1.73cm de altura
p = new Persona(null, 30, 1.73, 0);
result = db.queryByExample(p);

System.out.println("Personas con 30 años y 1.73cm de altura");
while (result.hasNext()) {
    System.out.println(result.next());
}

Resultado:

Si queremos una persona con un nombre en concreto:


// Todas las personas llamadas Domingo
p = new Persona("Domingo", 0, 0, 0);
result = db.queryByExample(p);

System.out.println("Personas llamada Domingo");
while (result.hasNext()) {
    System.out.println(result.next());
}

Resultado:

Espero que os sea de ayuda. Si tenemos dudas, preguntad. Estamos para ayudarte.

Compartir

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *