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.