Professional Documents
Culture Documents
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;
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
// storeSecondPilot
Pilot pilot2 = new Pilot("Rubens Barrichello", 99);
db.store(pilot2);
System.out.println("Stored " + pilot2);
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:
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
// retrievePilotByName
Pilot proto = new Pilot("Michael Schumacher", 0);
ObjectSet result = db.queryByExample(proto);
listResult(result);
OUTPUT:
1
Michael Schumacher/100
// 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
// 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
// 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