Vous êtes sur la page 1sur 13

2009

db4objects
Practica de Iniciacin a las OODB
El objetivo de esta prctica, creada por y para los usuarios principiantes, es mostrar de manera sencilla el paradigma orientado a objetos en bases de datos con el gestor de open source db4o. El contenido nos muestra, de acuerdo al criterio del autor, una forma fcil de crear mostrar, modificar y borrar los datos (u objetos) contenidos en una base de datos.

Programando un sueo O soando que programas xD

SCJA, SCJP Hugo Alberto Gabriel Prez Sistemas Computacionales Administrativos 05/03/2009

Nivel Muestra (Realmente para nios). =D


Una vez que db4o ha sido instalado en nuestro equipo, solo queda echar a andar la imaginacin y comenzar a estructurar y llenar nuestra base de datos =D . En esta ocasin, debido a que se trata de una prctica de iniciacin, haremos algo sencillo, simplemente guardaremos algunos objetos, los modificaremos, borraremos y mostraremos su estado. Dejando de lado el habla, comencemos. Importante: Durante la prctica, se har mencin a la base de datos relacional, ms en especifico, se comparar con mysql para que quede ms claro al lector. As tambin, todas y cada una de las clases sern separadas para un mejor entendimiento y funcionamiento de nuestro ejemplo.

OJO!
El cambio en esta prctica radica ms que nada en un import que en algunas imgenes del anterior no apareca. (S que ya se haban dado cuenta verdad?) Nota: En caso de que an ya con las clases correctas, la aplicacin siga sin correr, favor de visualizar la ltima seccin de esta prctica llamada Posible solucin. Zoom recomendado de 125 a 150%.

Pasos a seguir para formalizar la prctica:

Paso 1 Creacin de la clase Lo primero que debemos saber (para los que sabemos un poco de mysql), es que ahora la base de datos no debe crearse con create database [nombre_db];, aqu se crean directamente las clases (que sustituyen a las conocidas tablas de mysql), para posteriormente crear con ellas objetos (que sustituyen a las tuplas de las tablas de mysql xD ), siendo estos ltimos los datos que manejaremos a nuestra conveniencia. A continuacin se muestra el ejemplo de nuestra clase a crear, se llamar Student, y sus propiedades sern las mostradas. /*Aqu viene el cdigo tal cual lo compil en Student.java*/ public class Student { String name; int age; public Student(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } public String updateName(String name) { this.name = name; return name; } public int updateAge(int age) { this.age = age; return age; } public String toString() { return "\tName:" + name + "\n\tAge: " + age; } } /**Este comentario no lo peguen!!! */ Una vez creada y guardada la clase anterior y como Student.java tenemos ya nuestra primera tabla (comparndola claro con mysql =D ).

Paso 2 Creacin de la clase de conexin a la base de datos. La clase mostrada abajo, solo representa la conexin con la base de datos, como pueden notar, es muy sencilla y mucho ms corta que la sentencia utilizada para conectar mysql con java xD .

/*Aqu viene el cdigo tal cual lo compil en ConectionDB.java*/ import com.db4o.*; import com.db4o.Db4o.*; public class ConectionDB { public static ObjectContainer conectionDB(String dataBase) { ObjectContainer db = Db4o.openFile(dataBase); return db; } } /**Este comentario no lo peguen!!! */ Importante: Notemos que nuestra clase tiene un mtodo que recibe un parmetro, ste ser el nombre de nuestra base de datos, o bien, uno de los archivos de nuestra base de datos.

Paso 3 Creacin de un objeto. La siguiente clase Students, tendr la funcionalidad de almacenar en ella todos y cada uno de los datos que formaran a nuestro objeto Student.

/*Aqu viene el cdigo tal cual lo compil en Students.java*/ import com.db4o.*; import com.db4o.Db4o.*; public class Students { public static void newStudent(ObjectContainer db,String name,int age) { try { Student student = new Student(name,age); db.store(student); System.out.println("\n\tStored\n" + student); } finally { db.close(); } } } /**Este comentario no lo peguen!!! */ Importante: Nuevamente notemos que el mtodo de sta clase tambin recibe parmetros, mismos que llenaran a cada registro de nuestra base.

Paso 4 Mostrar los objetos guardados en la base de datos. La clase de abajo, tiene la funcin de mostrar (en caso de haberlo) los registros que hayamos almacenado. /*Aqu viene el cdigo tal cual lo compil en RetrieveStudent.java*/ import com.db4o.*; import com.db4o.Db4o.*; public class RetrieveStudent { public static void listResult(ObjectSet result) { System.out.println("\nObjects\n\t" + result.size() "\n\t____"); while (result.hasNext()) { System.out.println(result.next()); System.out.println("\n____________\n"); } } public static void retrieveStudent(ObjectContainer db) { try { Student student = new Student(null, 0); ObjectSet result = db.queryByExample(student); listResult(result); } finally { db.close(); } } } /**Este comentario no lo peguen!!! */ Importante: Nuevamente noten el paso de parmetros en los mtodos que la conforman. +

Paso 5 Cambiar los datos del objeto almacenados. Con la clase de abajo, podremos cambiar alguno de los datos del registro que deseemos, para lo cual debemos indicrselo mediante parmetros en los mtodos. /*Aqu viene el cdigo tal cual lo compil en UpdateStudent.java*/ import com.db4o.*; import com.db4o.Db4o.*; public class UpdateStudent { public static void updateStudent(ObjectContainer db,String name,String newName,int newAge) { try { ObjectSet result = db.queryByExample(new Student(name, 0)); Student found = (Student)result.next(); if (newAge != 0) { found.updateAge(newAge); } if (newName != null) { found.updateName(newName); } db.store(found); System.out.println("\n\tUpdated"); } finally { db.close(); } } } /**Este comentario no lo peguen!!! */

Paso 6 Borrar alguno de los objetos almacenados. Por ltimo, con esta clase nos encargaremos de borrar aquellos datos que consideremos ya no merecen permanecer en nuestra base. /*Aqu viene el cdigo tal cual lo compil en DeleteStudent.java*/ import com.db4o.*; import com.db4o.Db4o.*; public class DeleteStudent { public static void deleteStudent(ObjectContainer db, String name) { try { ObjectSet result = db.queryByExample(new Student(name,0)); Student found = (Student)result.next(); db.delete(found); System.out.println("\nDeleted \n" + found); } finally { db.close(); } } } /**Este comentario no lo peguen!!! */ Mucho ms importante an: Noten que en todas las clases en que es necesario consultar a la base de datos, manejamos nuestro cdigo en un try/finally, esto con el fin de hacer que nuestra conexin a las base de datos no quede abierta y gaste ms recursos de los necesarios.

Paso ltimo Creacin de un mtodo main para manipular las clases creadas. Hasta ahora solo hemos creado clases y clases sin ver su funcionalidad. Es por eso que se ha creado este ltimo paso, en el cual podemos notar una clase denominada como MainStudent.java esto por ser la nica que contiende el mtodo main. Puede verse que a propsito se le han comentado secciones del cdigo, esto para el manejo de cada uno de los mtodos con tenidos en las clases ya mostradas sin que estas tengan conflicto entre s al ejecutar el cdigo completo. /*Aqu viene el cdigo tal cual lo compil en MainStudent.java*/ import com.db4o.*; import com.db4o.Db4o.*; public class MainStudent { public static void main(String []args) { ObjectContainer db ConectionDB.conectionDB("Student"); //Students.newStudent(db,"Alberto",20); RetrieveStudent.retrieveStudent(db); //UpdateStudent.updateStudent(db,null,"Manuelo",23); //DeleteStudent.deleteStudent(db,"Leonelo"); } } /**Este comentario no lo peguen!!! */ =

Importante: Como todos los mtodos ejecutados requieren de la conexin, esa sentencia ser la nica que no deber comentarse. Es necesario comentar que para un manejo apropiado de MainStudent.java es necesario que se comenten sus segmentos de cdigo, se guarde y posteriormente se vuelva a compilar la clase. A continuacin, seguiremos con la prctica, y ahora veremos desde lnea de comandos cmo se comportan cada una de las clases, esto con la finalidad de que las dudas que hayan surgido puedan ser aclaradas =D .

Actividad 1 A compilar nuestras clases xD. En mi caso, la sintaxis en que he guardado mis clases es C:\practicaDb4o .

Actividad 2 A guardar datos en nuestra base de dato =D. Antes de empezar con el almacenamiento de datos, haremos una consulta a la base de datos Student para verificar su estado (vaca o con algn registro), para lo cual ejecutaremos las siguientes lneas de cdigo de la clase MainStudent.java :

El resultado mostrado:

Ahora si empezaremos a llenar nuestra base con las siguientes lneas de cdigo: Mediante para metros, le indicaremos los datos a guardar en nuestro primer registro =D.

El resultado mostrado: Podemos observar que nos muestra lo que se ha guardado, mucho ojo, no se realiz una consulta, simplemente nos dice que datos guard.

Actividad 3 A revisar los registros habidos en nuestra base xD. Ejecutaremos las siguientes lneas de cdigo:

El resultado:

Importante: Seamos observadores! No es magia, los registros se hicieron a propsito para poder tener una mejor visualizacin de una consulta completa. En ella se muestra el nmero de registros que existen al momento y cuales son cada uno de ellos. Actividad 4 A cambiar algunos nombres o edades =D. De acuerdo al resultado de la consulta anterior, cambiemos primero la edad de Manuelo , ya que en realidad no son 20 aos, le daremos 3 aos ms =P . Ejecutaremos el siguiente cdigo:

El resultado mostrado:

Hagamos una consulta para visualizar el cambio xD:

Actividad 5 A borrar al registro que menos queramos =P. Elegiremos uno de los registros que tenemos para poder hacer la eliminacin del mismo. Ejecutaremos el siguiente cdigo:

El resultado mostrado:

Nos muestra el registro que ha sido borrado, a continuacin haremos una consulta para verificar que en realidad Leonelo haya desaparecido xD :

Y en efecto Leonelo ha desaparecido de nuestra base de datos =D. Recuerden que no fue magia! Y si no creen, Hgalo ustedes mismos! =D Fin. Agradecimientos a quien en verdad lea esta pequea practica, y a quien no, pues no.

Posible solucin.
Esta seccin esta creada especialmente para aquellos que tengan problema alguna con su archivo .jar de db4o. Cmo saber si tengo algn problema con el archivo .jar? Muy sencillo! Cuando compilas tus clases, el primer error que te origina dice algo al respecto del archivo .jar, puede decirte que necesitas uno ms actual, o uno ms viejo. El chiste es que para nada ser el archivo que agregaste al CLASSPATH. As que a continuacin les dar un pequeo mini tutorial para que sepan que hacer =D. Primer paso xD y nico Revisen la versin que tiene su jdk o su jre en la siguiente sintaxis, o donde sea que sepan que se encuentra, en mi caso es C:\Program Files\Java.

Con lo anterior s que el archivo .jar que debo agregar al CLASSPATH es el siguiente db4o7.4.84.12673-java5.jar An as, existe el caso (porque fue lo que pas con algunos de sus compaeros) de tener una versin ms atrasada al jdk 5 6, por lo que sera bueno que checaran los siguientes rangos.

Vous aimerez peut-être aussi