viernes, 22 de enero de 2010

Iniciandose en Derby: Java DB

Derby es un subproyecto de Apache DB. Se trata de un manejador de base de datos de código abierto hecho completamente en java. Derby tiene varias características que lo hacen sumamente atractivo para soluciones en sistemas ligeros. Entre otras me gustaría mencionar las que a mi me llamaron la atención: es fácil de instalar, ligero (pesa tan solo unos cuantos megabytes) y puede usarse de manera embebida (palabra que si existe en español, ver aquí), es decir, que dentro de una aplicación java, podemos iniciar y utlizar bases de datos de Derby dentro de la misma máquina virtua.


Bueno, después de esta pequeña reseña que podemos encontrar fácilmente en cualquier sitio que hable de Derby, vamos a lo importante, como lo usamos dentro de nuestras aplicaciones.

Básicamente lo que haré a continuación será parafrasear un poco los ejemplos de la guía rápida básica de Derby que podemos encontrar en el tutorial oficial.

Primero que nada necesitamos descargar Derby por supuesto, lo cual se puede hacer aquí. Una vez descargado descomprimimos el directorio que esta ahí contenido, ejemplo 'db-derby-alguna_version-bin'. A la ubicación de este directorio lo llamaremos de ahora en adelante: DERBY_HOME.

Comenzaremos con el ejemplo de el uso de Derby embebido dentro de tu aplicación java, lo hago debido a que esta es una de las características que mas llaman la atención de este manejador. Se supone que ya tenemos instalado y debidamente configurado un jdk en nuestro equipo.

Lo haremos a través de la linea de comandos (unix y windows) para hacer mas sencillo de explicar el procedimiento.

Primero creamos un directorio que llamaremos "DERBYTUTOR" y entramos en él. Ahí introduciremos los sguientes comandos, no se te olvide el punto que va al final (.):
Unix:
cp $DERBY_HOME/demo/programs/workingwithderby/* .

export CLASSPATH=$DERBY_HOME/lib/derby.jar:.

 Windows:
copy %DERBY_HOME%\demo\programs\workingwithderby\* .

set CLASSPATH=%DERBY_HOME%\lib\derby.jar;.

Ahora en el directorio DERBYTUTOR en donde nos encontramos deben existir varios archivos java. Después de confirmar que los archivos WwdEmbedded.java y WwdUtils.java existan e introducir el siguiente comando para compilar ambos archivos:

Unix y Windows:
javac WwdEmbedded.java WwdUtils.java
Si en este punto ocurre algún error probablemente es porque no se tiene bien configurado el jdk en nuestro sistema o que al definir el classpath algo no se hizo correctamente.

Si todo salió bien no deberá aparecer nada al ejecutarse la linea anterior y los archivos se habrán compilado satisfactoriamente, creando los archivos WwdEmbedded.class y WwdUtils.class.

A continuación ejecutamos el ejemplo con el siguiente comando y sucederá algo como lo que sigue:

java WwdEmbedded 
org.apache.derby.jdbc.EmbeddedDriver loaded.
Connected to database jdbcDemoDB
 . . . . creating table WISH_LIST
Enter wish-list item (enter exit to end):
a peppermint stick
  __________________________________________________________
On 2009-05-08 13:12:09.058 I wished for a peppermint stick
  __________________________________________________________
Enter wish-list item (enter exit to end):
a long vacation
  __________________________________________________________
On 2009-05-08 13:12:09.058 I wished for a peppermint stick
On 2009-05-08 13:12:21.28 I wished for a long vacation
  __________________________________________________________
Enter wish-list item (enter exit to end):
exit
Closed connection
Database shut down normally
Getting Started With Derby JDBC program ending.

¿Que sucede aquí? Estamos accediendo una base de datos Derby embebida he insertando datos en una tabla. Asi es, sin un servidor Derby activo, simplemente con la aplicación actual.

En el enlace del ejemplo podrás obtener más detalles, lo único que me gustaría comentar aquí es como se logra la conexión en la clase WwdEmbedded a través de que detalles.

Lo único que cambia, con respecto al uso de cualquier JDBC es que utiliza los siguientes parametros:
   // define driver a usar (el contenido en la libreria derby.jar)
      String driver = "org.apache.derby.jdbc.EmbeddedDriver";
   // nombre de la base de datos 
      String dbName="jdbcDemoDB";
   // URL que Derby usara
      String connectionURL = "jdbc:derby:" + dbName + ";create=true";

Y con esto simplemente creamos la conexión de manera normal:

String driver = "org.apache.derby.jdbc.EmbeddedDriver";
...
try {
    Class.forName(driver); 
} catch(java.lang.ClassNotFoundException e) {
  ...
}
String connectionURL = "jdbc:derby:" + dbName + ";create=true";
...
try {
    conn = DriverManager.getConnection(connectionURL);
    ...  
}  catch (Throwable e)  {   
   ...
}

 Aquí concluiría este blog, cualquier otra duda te invito a checar la documentación de los ejemplos, es bastante clara (Aunque en inlgés) y para fines prácticos yo la veo bastante útil.

Puedes ver el sitio oficial de Derby aqui.

No hay comentarios:

Publicar un comentario