lunes, 17 de agosto de 2009

Diseño de interfaces gráficas en Java, Parte 4: Creación del Modelo de la aplicación


Primero la capa de datos

¡Saludos nuevamente!

En esta ocasión dejaremos un poco la parte de la presentación y nos enfocaremos en la creación de una pequeña lógica de negocio junto con el acceso a un sistema manejador de base de datos. Aunque podría parecer que me salgo del tema original relacionado con interfaces gráficas, considero que es importante tocar el punto en el que uniríamos el Modelo de la aplicación con la Vista y el Controlador, ya que es el punto al que finalmente se tiene que llegar en todo desarrollo de aplicaciones.

Para lograr este objetivo primero tenemos que considerar la comunicación horizontal de las capas de la aplicación, es decir la forma en que la información llegará desde la capa de acceso a datos hasta la capa de presentación. En el nivel más bajo tendremos un sistema manejador de bases de datos en que estará almacenada nuestra información, en este caso opte por el PostgreSQL, ya que es un gestor en el que apenas me estoy adentrando y nos servirá a todos los novatos para comenzar a dominar un nuevo administrador de base de datos.

Además es un SMBD open source rubusto y por si fuera poco, su mascota es un elefante, y todos sabemos que los elefantes son geniales.

Pueden descargar este sistema desde la sección downloads de la página oficial de PostgreSQL, eligiendo el sistema operativo de su preferencia.

Si descargan la versión para Windows notarán que además hay una aplicación visual de escritorio para administrar las base de datos en PostgreSQL, llamado pgAdmin. Esta aplicación viene incluida dentro del instalador de postgreSQL para este sistema operativo.

Dentro de las características de postgreSQL encontramos que:
- Es un manejador de base de datos dual al ser relacional y orientado a objetos, esto último es una características muy interesante ya que permite manejar conceptos como la herencia entre las tablas.
- Es un sistema multiusuario y multiplataforma.
- Soporta replicación.
- Nos permite utilizar un conjunto de datos complejos, como vectores, xml, figuras geométricas o arreglos, entre otros.
- Permite utilizar varios conceptos avanzados como llaves foráneas, constraints, vistas, transacciones y la propia herencia.
- Implementa un gran conjunto de instrucciones del lenguaje SQL.
- También permite implementar triggers en diferentes lenguajes de programación ajenos al lenguaje nativo procedimental.

La documentación completa de este sistema la encontraremos en la sección Documentation de la página oficial de la plataforma.

Para este ejemplo utilizaremos las funcionalidades estándar, como son crear una base de datos, crear una tabla, añadir registros y consultar.

Iniciando el servidor

Primero asegúrense de que el servidor de PostgreSQL está corriendo, en el caso de un escritorio de Windows pueden echarlo a andar desde Inicio > Todos los programas > PostgreSQL 8.4 > Start Server. Para un S.O. GNU/Linux en la consola de comandos pueden utilizar la instrucción:

#su -
Ingresa tu contraseña de root
#service postgresql initdb
Iniciamos por primera vez el cluster de postgreSQL
#service postgresql start
Iniciamos el servicio de postgreSQL


Si hemos instalado el pgAmin en nuestro escritorio podemos realizar cada uno de los siguientes pasos a través de su interfaz gráfica. En caso contrario también podemos utilizar el Shell de PostgreSQL con los comando. Dentro de Windows pueden encontrar este Shell en Inicio > Todos los programas > PostgreSQL 8.4 > Shell, para Linux basta que desde la consola de comando tenemos que estar logeados como root (tal y como quedamos en el paso anterior) e ingresar los siguientes comandos:

#su - postgres
Nos cambiamos a la cuenta del administrador de postgreSQL
#psql
Entramos al Shell de postgreSQL


Creación de la base de datos

Crearemos una nueva base de datos llamada pruebas. Desde el Shell sería:

postgres=#CREATE DATABASE pruebas WITH OWNER = postgres;


Nota: El siguiente paso es solo necesario para los que esten utilizando el Shell:

Salimos del Shell

postgres=#\q


y volvemos a ingresar, con los pasos que vimos antes, solo que ahora debemos seleccionar la base de datos pruebas que recién creamos. Desde el Shell de Windows bastará con en los parámetros que nos pide capturar en un inicio:

Server [localhost]:
Database [postgres]: pruebas
Port [5432]:
Username[postgres]:


Dejando el resto de los campos sin cambio para que conserven los valores por defecto que se indican. Mientras que en Linux bastará con el comando :

#psql -d pruebas


desde la consola de comandos. Recuerden que tenemos que estar logeados como el usuario postgres.

Creación de la tabla

Ahora, creamos una nueva tabla para esta base de datos llamada usuario, con las características que se muestran en el script:

CREATE TABLE usuario
(
"correoElectronico" character varying(50) NOT NULL,
nombre character varying(60),
domicilio character varying(60),
edad integer,
telefono character varying(20),
CONSTRAINT correo PRIMARY KEY ("correoElectronico")
)
WITH (
OIDS=FALSE
);
ALTER TABLE usuario OWNER TO postgres;


Desde el pgAdmin la creación de tablas se hace accediendo a la base de datos y dentro de Schemas > public seleccionamos la opción New Object > New Table...



Inserción de los registros

Ahora, solo queda insertar algunos registros en la tabla para hacer las pruebas desde nuestra aplicación en Java:

INSERT INTO usuario(
"correoElectronico", nombre, domicilio, edad, telefono)
VALUES
('maria@gmail.com', 'María Rodríguez', 'Av. Libertadores #5464', 19, '(611)6766676'),
('antonio@gmail.com', 'Antonio Márquez', 'Misiones #786', 22, '(611)9898981'),
('estela@gmail.com', 'Estela Saldivar', 'Av. Ruta de la Seda #9004', 25, '1184564');


Controlador de PostgreSQL para Java

De esta forma la base de datos esta preparada para ser utilizada. Ahora solo tenemos que incluir en nuestro proyecto de Java el controlador para conectarse con bases de datos de PostgreSQL. Este lo pueden descargar desde la página oficial del proyecto PostgreSQL > JDBC Driver, el cual consiste en un archivo .jar que contiene una biblioteca de clases para implementar el acceso a las bases de datos de este servidor. Una vez descargado el archivo, para incluirlas en nuestro proyecto de Eclipse, bastará con que configuremos el Build Path del JRE System Library (biblioteca del sistema de JRE) del proyecto, haciendo clic derecho sobre el JRE System Library y seleccionando:



Y dentro de la ventana que aparece seleccionamos el botón "Add External JARs..." con lo cual podremos agregar el archivo .jar descargado a la lista de referencia del proyecto:



Si están utilizando el entorno de desarrollo diferente de Eclipse entonces pueden usar la herramienta que posea para agregar archivos JAR externos.

Si por el contrario, están compilando y probando todos los programas desde la consola de comandos, una solución será modificar el CLASSPATH del programa para incluir la referencia al archivo .jar. En la documentación de la biblioteca que encuentran en la misma página de PostgreSQL > JDBC Driver se especifican los pasos, pero para ahorrar un poco el trabajo sería más o menos así:

Como ejemplo, si tenemos un archivo fuente llamado myapp.jar que contiene la definición de la clase MyApp, este archivo se encuentra en /usr/local/lib/myapp.jar y la biblioteca .jar está en /usr/local/pgsql/share/java/postgresql.jar, la ejecución de la aplicación sería:

#export CLASSPATH=/usr/local/lib/myapp.jar:/usr/local/pgsql/share/java/postgresql.jar:.
#java MyApp


Todo desde la consola de comandos. Otra solución, -que me pareció más sencilla- la encontré en este blog, y consisten en copiar el archivo en el directorio de extensiones de JRE, es decir JRE\lib\ext. Por ejemplo, la ruta absoluta en mi S.O. Windows es C:\Archivos de programa\Java\jre6\lib\ext, y variará según el sistema operativo en el que estén trabajando.

Y con esta referencia ya estaremos listos para pasar a la programación de la aplicación en Java, pero debido a lo mucho que se extendió este post, esa parte quedará pendiente para el siguiente artículo.

Recuerden que para cualquier duda u observación pueden dejar un comentario en este y todos los otros artículos.

Hasta la próxima.

2 comentarios:

Unknown dijo...

hola necesito una ayuda

Anónimo dijo...

En que te puedo ayudar?

Publicar un comentario