Java MVC
Java MVC
REQUERIMIENTOS
DESCRIPCIN
Para poder conectar una aplicacin Java con la base de datos se requiere
la existencia de un driver (conector). Primero que todo se debe verificar
que este driver exista. En el caso de que no exista se debe agregar de
acuerdo a como se indica en la siguiente figura (y como fue revisado en
detalle en el tutorial anterior):
Al hacer clic en New Driver se despliega la siguiente ventana:
Tutorial Java MJC
Yasna Me:a Hidalgo
Sun Certified Java Programmer SCJP 5.0
Se necesita el archivo que contiene el driver, normalmente es un archivo
con extensin .JAR. Una vez que haya seleccionado el .JAR aparece el
nombre del archivo .class y el nombre con el que se va a identificar el
conector, tal y como lo muestra en la siguiente figura:
Tutorial Java MJC
Yasna Me:a Hidalgo
Sun Certified Java Programmer SCJP 5.0
ACTIVIDAD 2 CREACIN DE PAQUETES
CLASE CONEXIN
Los atributos con los que cuenta la clase son los que se indican en la
siguiente figura:
Tutorial Java MJC
Yasna Me:a Hidalgo
Sun Certified Java Programmer SCJP 5.0
Como pueden darse cuenta los atributos del tipo protected que se
encuentran definidos tienen relacin con los parmetros que se han
definido en el archivo de configuracin que fue definido en la actividad
anterior.
Para obtener mayor informacin acerca de las clases/interfaces que
aparecen en la definicin de esta clase se sugiere revisar la API:
http://java.sun.com/javase/6/docs/api/index.html
Al revisar el constructor se tiene:
Lo anterior va a permitir generar una instancia de conexin. Nuevamente
se debe notar la relacin que existe con los parmetros que fueron
definidos dentro del archivo de configuracin definido en la actividad
anterior. Notar por ahora el uso del mtodo getProperty() que permite
obtener una propiedad (property) que se haya definido. Ms adelante se
explica la forma de definir y crear las properties con las cuales va a
trabajar la aplicacin.
Finalmente, se presenta el mtodo initdb() el cual es invocado en el
constructor para completar la definicin de la clase.
Para crear la clase Conexion se debe hacer clic derecho en el paquete
servicios y seleccionar New Java Class, tal y como se indica en la
siguiente figura:
Tutorial Java MJC
Yasna Me:a Hidalgo
Sun Certified Java Programmer SCJP 5.0
Haciendo clic en el botn Finish se crea el editor donde se agrega el
cdigo que se ha analizado en los prrafos anteriores.
CLASE Conexion_mySQL
Esta clase hereda de la clase Conexin, lo que se interpreta como un tipo
de conexin especifica. El constructor de esta clase es el que se indica
a continuacin:
En el slo se agrega el seteo del atributo opciones de acuerdo al valor
de la propiedad que se obtiene y luego se llama al mtodo initdb() el
cual se encuentra sobreescrito tal y como se indica en la siguiente
figura:
Tutorial Java MJC
Yasna Me:a Hidalgo
Sun Certified Java Programmer SCJP 5.0
Lo anterior permite sobrescribir el mtodo que se encuentra en la clase
padre de forma de definir el string de conexin de acuerdo al motor de
base de datos que se est tratando (cada motor de base de datos maneja un
string de conexin distinto, normalmente, se deben revisar los manuales
para conocer la forma de definir el string de conexin en cada caso).
Analizando el cdigo que se muestra en la figura anterior se tienen que
en la lnea 44 se genera una instancia annima considerando el driver que
se haba definido previamente en el archivo de configuracin.
En la lnea 47 se considera la creacin de la conexin, tomando como
argumentos los valores de los atributos de la clase.
CLASE Error
La clase Error es bastante sencilla y slo se limita a representar a los
distintos errores de negocio que se van a definir dentro de la
aplicacin. El cdigo de la clase se encuentra en la siguiente figura y
no debera tener mayores explicaciones.
Tutorial Java MJC
Yasna Me:a Hidalgo
Sun Certified Java Programmer SCJP 5.0
CLASE factoriaServicios
Esta clase representa la generacin de las conexiones a la base de datos.
La idea es mantener una sola conexin, evitando as el uso indebido de
recursos al utilizar, por ejemplo, una conexin independiente para cada
peticin que se tenga.
En la figura anterior es posible destacar la definicin de los dos
atributos cdb e instancia que corresponden a la conexin sobre la cual se
va a trabajar y a la instancia del servicio que se va a ofrecer.
A continuacin se describen dos mtodos que se han definido en la clase
que permiten obtener la instancia y la conexin a la base de datos.
Tutorial Java MJC
Yasna Me:a Hidalgo
Sun Certified Java Programmer SCJP 5.0
En este mtodo se verifica si la instancia existe previamente, en caso de
que exista se retorna el objeto que se tiene y en caso contrario se crea.
En este caso se verifica que la conexin exista en caso de que as sea
entonces se retorna, de lo contrario se crear la conexin de acuerdo a lo
definido en la propiedad databaseclass definida dentro del archivo
configdatabase definido en una de las actividades anteriores.
Tutorial Java MJC
Yasna Me:a Hidalgo
Sun Certified Java Programmer SCJP 5.0
ACTIVIDAD 6 EXPLICANDO LAS CLASES CAPA DE BASE DE DATOS
CLASE PersonaBD
Esta clase representa a la persona como un registro en una tabla de la
base de datos. En la siguiente figura se aprecia la definicin de
atributos y el constructor de la clase:
Esta clase cuenta con tres mtodos que dicen relacin con las operaciones
asociadas a un registro de la tabla: grabar, leer y borrar. Las
siguientes figuras muestran la implementacin de cada mtodo.
Tutorial Java MJC
Yasna Me:a Hidalgo
Sun Certified Java Programmer SCJP 5.0
Vamos a comentar algunas lneas de cdigo de este mtodo.
En la lnea 38 se crea el objeto asociado a la conexin a la base de
datos, se utiliza la clase factoriaServicios que se encuentra en el
paquete servicios que se ha definido anteriormente.
Las lneas 40 y 41 setean los atributos de la clase conexin que tienen
relacin con la consulta que se va a ejecutar y el resultado de la misma.
La consulta SQL no es ms que un simple string que contiene cdigo SQL.
Para poder ejecutar la consulta se utiliza el mtodo executeQuery().
En la lnea 42 se comprueba el xito de la consulta SQL para ver si el
proceso de grabar el registro se debe traducir como una operacin de
insercin (INSERT) o como una operacin de actualizacin (UPDATE).
Dependiendo del tipo de grabacin del que se trata se procede a setear la
consulta SQL y a ejecutarla a travs del mtodo executeUpdate().
Tutorial Java MJC
Yasna Me:a Hidalgo
Sun Certified Java Programmer SCJP 5.0
El mtodo leer() tiene como objetivo obtener, a partir del RUT, los datos
asociados a una persona. La explicacin de las lneas 69, 71 y 72 tienen
la misma explicacin que se entreg en el mtodo grabar.
Las lneas 75 a la 77 obtienen los datos a partir de los resultados de la
consulta. Se hace uso del mtodo getString() de la interfaz Statement
(revisar la API para obtener mayores detalles). Observar que se lanzan
las excepciones a partir de la clase Error que se encuentra definida en
el paquete servicios.
Finalmente, se tiene el mtodo borrar() cuya implementacin se encuentra
en la siguiente figura:
En este caso, nuevamente, se setean los valores de los atributos de la
clase Conexin. En este caso la consulta que se va a ejecutar corresponde
a la sentencia SQL DELETE asociada a la eliminacin de un registro de la
tabla.
En este paquete se encuentra incluida la clase PersonasBD cuyo objetivo
es representar a un conjunto de personas. Esta clase cuenta con dos
mtodos asociados a leer al grupo completo de registros y a leer a un
grupo de registros de acuerdo a un filtro asociado a un campo especfico
Tutorial Java MJC
Yasna Me:a Hidalgo
Sun Certified Java Programmer SCJP 5.0
de la tabla. Ambos mtodo retornan un ArrayList con los objetos que han
sido creados a partir de los datos que han sido extrados de la tabla.
En las siguientes figuras se muestra una porcin de cdigo de cada
mtodo. El cdigo completo lo puede analizar en el proyecto que le fue
entregado junto a este tutorial.
En el caso del mtodo leer() se tiene una consulta SQL general que
permite retornar a todas las personas ordenadas por nombre.
Al sobrecargar el mtodo leer() se tiene la aplicacin de un filtro de
acuerdo a un determinado campo y se tiene:
En el caso del mtodo leer sobrecargado, que utiliza filtro, se compone
la consulta SQL con los parmetros que recibe.
Tutorial Java MJC
Yasna Me:a Hidalgo
Sun Certified Java Programmer SCJP 5.0
ACTIVIDAD 7 EXPLICANDO LAS CLASES CAPA DE NEGOCIO
CLASE Persona
Esta clase representa a la persona desde el punto de vista de objeto.
Contiene el tradicional grupo de mtodos setter y getter. Adems cuenta
con los mtodos grabar(), leer() y borrar() que dicen relacin con las
operaciones relacionadas con la tabla en la base de datos.
En la figura anterior se aprecia que cada uno de los mtodos crea un
objeto del tipo PersonaBD e invoca al mtodo asociado a la operacin en
la tabla; en trminos simples, est haciendo uso de los servicios que la
capa de BD ofrece.
En esta clase adems se encuentra la clase Personas que representa al
conjunto de objetos que pueden ser obtenidos a partir de los registros de
la tabla de la base de datos. Cuenta con un mtodo sobrecargado que hace
uso de los servicios que provee la capa de BD.
Tutorial Java MJC
Yasna Me:a Hidalgo
Sun Certified Java Programmer SCJP 5.0
ACTIVIDAD 8 EXPLICANDO LAS CLASES CAPA CONTROLADOR