Sunteți pe pagina 1din 4

DB4O TUTORIAL

2. Primeros pasos
Vamos a empezar tan simple como sea posible. Vamos a demostrar cmo almacenar, recuperar,
actualizar y
Eliminar instancias de una sola clase que slo contiene primitivos y miembros String. En nuestro
ejemplo, este
Ser un piloto de Frmula Uno (F1) cuyos atributos son su nombre y los puntos F1 que ya ha ganado
esta temporada.
Primero creamos una clase para almacenar nuestros datos. Se parece a esto:

package com.db4odoc.f1.chapter1;
public class Pilot {
private String name;
private int points;

public Pilot(String name,int points) {


this.name=name;
this.points=points;
}
public int getPoints() {
return points;
}
public void addPoints(int points) {
this.points+=points;
}
public String getName() {
return name;
}
public String toString() {
return name+"/"+points;
}
}

Para acceder a un archivo de base de datos db4o o crear uno nuevo, llame a Db4oEmbedded.openFile ()
y proporcione
Db4oEmbedded.newConfiguration () como una plantilla de configuracin y la ruta de acceso al archivo
de base de datos como
El segundo parmetro, para obtener una instancia ObjectContainer. ObjectContainer representa "El
Base de datos ", y ser su interfaz principal a db4o.Cerrar el ObjectContainer con el #close ()
Mtodo cerrar el archivo de base de datos y liberar todos los recursos asociados con l.

// accessDb4o
ObjectContainer db = Db4oEmbedded.openFile(Db4oEmbedded
.newConfiguration(), DB4OFILENAME);
try {
// do something with db4o
} finally {
db.close();
}

DB4OFILENAME es slo un valor de cadena que representa cualquier nombre de archivo. Si el archivo
con este nombre ya
Existe, se abrir como base de datos db4o, de lo contrario se crear una nueva base de datos db4o.
Para los siguientes ejemplos vamos a suponer que nuestro entorno se encarga de abrir y cerrar el
ObjectContainer automgicamente, y almacena la referencia en una variable llamada 'db'.

1
2.2. Almacenamiento de objetos
Para almacenar un objeto, simplemente llamamos #store () a nuestra base de datos, pasando cualquier
objeto como un parmetro.

// storeFirstPilot
Pilot pilot1 = new Pilot("Michael Schumacher", 100);
db.store(pilot1);
System.out.println("Stored " + pilot1);

OUTPUT:
Stored Michael Schumacher/100

Necesitaremos un segundo piloto, tambin.

// storeSecondPilot
Pilot pilot2 = new Pilot("Rubens Barrichello", 99);
db.store(pilot2);
System.out.println("Stored " + pilot2);

2.3. Recuperacin de objetos


La forma ms fcil de ver el contenido de nuestra base de datos es utilizar Object Manager Enterprise,
que ser
Introducido en el prximo captulo. Por ahora, continuemos con la descripcin general de la API y
aprendamos a construir
Consultas db4o.

Db4o suministra varios sistemas de consulta diferentes,Consulta por ejemplo (QBE),,Consultas


nativas (NQ) y el API de consulta SODA
(SODA). En este primer ejemplo presentaremos QBE. Una vez que est familiarizado con Almacenar
objetos, le recomendamos que utilice Consultas nativas.

Cuando se utiliza Query-By-Example, se crea un objeto prototpico para que db4o se use como un
ejemplo de lo que
Que desea recuperar. Db4o recuperar todos los objetos del tipo dado que contengan el mismo (no-
Predeterminado) como el ejemplo. Los resultados se devolvern como una instancia ObjectSet.
Usaremos
Un mtodo de conveniencia #listResult () para mostrar el contenido de nuestro resultado ObjectSet:

public static void listResult(ObjectSet result) {


System.out.println(result.size());
while(result.hasNext()) {
System.out.println(result.next());
}
}

Para recuperar todos los pilotos de nuestra base de datos, ofrecemos un prototipo 'vaco':

// retrieveAllPilotQBE
Pilot proto = new Pilot(null, 0);

2
ObjectSet result = db.queryByExample(proto);
listResult(result);
OUTPUT:
2
Rubens Barrichello/99
Michael Schumacher/100

Tenga en cuenta que especificamos 0 puntos, pero nuestros resultados no fueron limitados a slo los
Pilotos con 0 puntos; 0
Es el valor predeterminado para los campos int.
Db4o tambin proporciona un acceso directo para recuperar todas las instancias de una clase:

// retrieveAllPilots
ObjectSet result = db.queryByExample(Pilot.class);
listResult(result);

OUTPUT:
2
Rubens Barrichello/99
Michael Schumacher/100

Para JDK 5 tambin hay un atajo genrico, utilizando el mtodo de consulta:

List <Pilot> pilots = db.query(Pilot.class);

Para solicitar un piloto por nombre:

// retrievePilotByName
Pilot proto = new Pilot("Michael Schumacher", 0);
ObjectSet result = db.queryByExample(proto);
listResult(result);

OUTPUT:
1
Michael Schumacher/100

Y para consultar Pilotos con un nmero especfico de puntos:

// retrievePilotByExactPoints
Pilot proto = new Pilot(null, 100);
ObjectSet result = db.queryByExample(proto);
listResult(result);

OUTPUT:
1
Michael Schumacher/100

3
2.4. Actualizacin de objetos
Actualizar objetos es tan fcil como almacenarlos. De hecho, utiliza el mismo mtodo #store () para
actualizar sus objetos: simplemente llame #store () de nuevo despus de modificar cualquier objeto.

// updatePilot
ObjectSet result = db.queryByExample(new Pilot("Michael Schumacher", 0));
Pilot found = (Pilot) result.next();
found.addPoints(11);
db.store(found);
System.out.println("Added 11 points for " + found);
retrieveAllPilots(db);

OUTPUT:
Added 11 points for Michael Schumacher/111
2
Rubens Barrichello/99
Michael Schumacher/111

2.5. Eliminacin de objetos


Los objetos se eliminan de la base de datos utilizando el mtodo #delete ().

// deleteFirstPilotByName
ObjectSet result = db.queryByExample(new Pilot("Michael Schumacher", 0));
Pilot found = (Pilot) result.next();
db.delete(found);
System.out.println("Deleted " + found);
retrieveAllPilots(db);

OUTPUT:
Deleted Michael Schumacher/111
1
Rubens Barrichello/99

Vamos a borrar el otro, tambin.

// deleteSecondPilotByName
ObjectSet result = db.queryByExample(new Pilot("Rubens Barrichello", 0));
Pilot found = (Pilot) result.next();
db.delete(found);
System.out.println("Deleted " + found);
retrieveAllPilots(db);
OUTPUT:
Deleted Rubens Barrichello/99
0

S-ar putea să vă placă și