Personal Website

My Web: MindEchoes.com

Friday, July 31, 2009

Usando Base de Datos en Java MUY SIMPLE!

Bueno, acabo de terminar de programar una primera versión bien basica de una libreria para tratar de abstraer algunas funcionalidades que se suelen presentar cuando programamos algun programa que requiera uso de Base de Datos, despues seguire mejorando el código para que sea lo mas automatico posible todas las operaciones que se pueden realizar.

La Libreria en si, puede ser descargada del siguiente link: QuickDB
(source code: http://code.google.com/p/library-inkubator/)

Para utilizar esta libreria con un proyecto Maven, abrimos una consola dentro de la carpeta donde se encuentra el ".jar" de QuickDB y ejecutamos el siguiente comando:

mvn install:install-file -Dfile=QuickDB-1.0-SNAPSHOT.jar -DgroupId=cat.inkubator -DartifactId=QuickDB -Dversion=1.0-SNAPSHOT -Dpackaging=jar

Y de esta forma ya tenemos la libreria en nuestro repositorio local de Maven y podemos usarla simplemente incluyendo la dependencia en el POM de nuestro proyecto de la siguiente forma:

<dependency>
<groupId>cat.inkubator</groupId>
<artifactId>QuickDB</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>

Si por el contrario queremos agregar la libreria en un proyecto de Netbeans clasico, creamos nuestro proyecto y agregamos la libreria como muestra la imagen:


Ahora que ya tenemos agregada la libreria a nuestro proyecto de una forma u otra, solo debemos tener en cuenta un par de cosas:
  • Crear nuestra Base de Datos en MySQL
  • Crear nuestras entidades que se mapearan a las tablas de la base de datos
  • Y usar AdminBase para interactuar con estas entidades y la base
Para el ejemplo cree un Catalogo llamado "testQuickDB" como se puede ver en la imagen con una tabla llamada "person":
Y la tabla "person" tiene las siguientes caracteristicas:

Una vez que tenemos nuestra Base de Datos creada de esta forma para el ejemplo, debemos crear en nuestro Proyecto Java una clase que pueda ser mapeada con nuestra Tabla, de esta forma creamos la Clase "Person" la cual debe implementar la interfaz que se encuentra en la libreria QuickDB llamada "ModelInterface" para que AdminBase sepa interactuar con esta clase.
El siguiente código muestra como quedaria esta clase Person al implementar la interfaz (los getters y setters no se tuvieron en cuenta para simplificar el código):


import java.sql.ResultSet;
import cat.inkubator.model.ModelInterface;

public class Person implements ModelInterface{

private int id;
private String name;
private String phone;
private int alive;

private String modelName = "person";
private String sql;

public Person(){}

public Person(String name, String phone, int alive){
this.name = name;
this.phone = phone;
this.alive = alive;
}

public String modelName(){
return this.modelName;
}

public String getSql(){
return sql;
}

public void setSql(String sql){
this.sql = sql;
}

public Object[] arrayRepresentation(){
Object[] obj1 = { "name", this.name};
Object[] obj2 = { "phone", this.phone };
Object[] obj3 = { "alive", new Integer(this.alive) };

Object[] result = { obj1, obj2, obj3 };

return result;
}

public void fromResultSet(ResultSet rs){
try{
this.id = rs.getInt("id");
this.name = rs.getString("name");
this.phone = rs.getString("phone");
this.alive = rs.getInt("alive");
}catch(Exception e){
e.printStackTrace();
}
}

}

Ahi ya tenemos nuestra Clase que se mapeara directo con la Tabla en nuestra Base de Datos, ahora para usar las operaciones de guardar los datos de los objetos que podamos crear, obtener algun objeto de la Base de Datos o lo que fuere creamos simplemente nuestra clase principal donde contendremos el Main:


import cat.inkubator.db.AdminBase;

public class App
{
public static void main( String[] args )
{
Person person = new Person("Diego", "453456721", 1);
AdminBase admin = new AdminBase("localhost", "3306",
"testQuickDB", "root", "");

//si es posible guardar los datos de la persona
//la funcion retornara TRUE y se imprimira el mensaje "Saved!"
if( admin.save(person) ){
System.out.println("Saved!");
}

//Crea una entidad persona vacia y le setea la sentencia sql
//esa entidad realizara una busqueda en la base de datos usando
//admin.obtain que retornara un ResultSet y Person lo parseara
//para restaurar los datos del objeto como en la base de datos
Person person2 = new Person();
person2.setSql("SELECT * FROM person WHERE name = 'Diego'");
person2.fromResultSet(admin.obtain(person2));
}
}

Esta son solo algunas de las operaciones que se pueden realizar, las operaciones mas comunes son soportadas y para modificaciones o eliminaciones solo debemos pasar la parte del WHERE de la sentencia sql y la libreria se encarga del resto.

Luego seguire añadiendo funcionalidades y explicando mas en profundidad el uso.
El ejemplo presentado puede descargarse del siguiente link (Versión realizada con Maven).
O tambien puede descargarse el ejemplo como proyecto Netbeans clasico.

No comments: