SPRING FRAMEWORK - EJECUTANDO PROCEDIMIENTOS ALMACENADOS
FUNDAMENTOS
Puedes usar cualquiera de los métodos query de JdbcTemplate o el método update para ejecutar el procedimiento almacenado, teniendo en cuenta si retorna o no un resultado.
Los procedimientos de SQL Server o MySQL pueden retornar directamente el resultado de una consulta utilizando la sentencia SELECT.
También dispones de la clase StoreProcedure donde dispones de opciones de mayor control para la ejecución de procedimientos almacenados.
SINTAXIS
El objetivo es ejecutar procedimientos almacenados que no tengan parametros de salida.
A continuación tienes la sintaxis que debes utilizar.
El procedimiento es para registrar una transacción que ejecuta un retiro de una cuenta.
create or replace procedure usp_egcc_retiro
(p_cuenta varchar2, p_importe number,p_empleado varchar2, p_clave varchar2)
as
v_msg varchar2(1000);
v_saldo number(12,2);
v_moneda char(2);
v_cont number(5,0);
v_estado varchar2(15);
v_costoMov number(12,2);
v_clave varchar2(10);
begin
-- Lee datos de la cuenta
select
dec_cuensaldo, chr_monecodigo, int_cuencontmov,
vch_cuenestado, chr_cuenclave
into v_saldo, v_moneda, v_cont, v_estado, v_clave
from cuenta
where chr_cuencodigo = p_cuenta
for update;
-- Verifica los datos de la cuenta
if v_estado != 'ACTIVO' then
raise_application_error(-20001,'Cuenta no esta activa.');
end if;
if v_clave != p_clave then
raise_application_error(-20001,'Datos incorrectos.');
end if;
-- Costo de operación
select dec_costimporte
into v_costoMov
from costomovimiento
where chr_monecodigo = v_moneda;
-- Verifica el saldo
v_saldo := v_saldo - p_importe - v_costoMov;
if v_saldo < 0.0 then
raise_application_error(-20001,'Saldo insuficiente.');
end if;
-- Actualiza la cuenta
update cuenta
set dec_cuensaldo = v_saldo,
int_cuencontmov = int_cuencontmov + 2
where chr_cuencodigo = p_cuenta;
-- Registra el movimiento de retiro
v_cont := v_cont + 1;
insert into movimiento(chr_cuencodigo,int_movinumero,dtt_movifecha,
chr_emplcodigo,chr_tipocodigo,dec_moviimporte,chr_cuenreferencia)
values(p_cuenta,v_cont,sysdate,p_empleado,'004',p_importe,null);
-- Registra el costo de la operación
v_cont := v_cont + 1;
insert into movimiento(chr_cuencodigo,int_movinumero,dtt_movifecha,
chr_emplcodigo,chr_tipocodigo,dec_moviimporte,chr_cuenreferencia)
values(p_cuenta,v_cont,sysdate,p_empleado,'010',v_costoMov,null);
-- Confirmar la Tx
commit;
exception
when others then
v_msg := sqlerrm; -- capturar mensaje de error
rollback; -- cancelar transacción
raise_application_error(-20001,v_msg);
end;
EJECUCIÓN DEL PROCEDIMIENTO
A continuación tienes el código Java para ejecutar el procedimiento usp_egcc_retiro:
Una transacción en un Sistema de Gestión de Bases de Datos (SGBD), es un conjunto de operaciones (instrucciones) que se ejecutan formando una unidad de trabajo, es decir, en forma indivisible o atómica.
CONFIGURACIÓN DEL CONTEXTO
A continuación tienes un ejemplo de la configuración del contexto.
El framework más utilizados en el desarrollo web con Java EE es sin duda Spring Framework, en este articulo te presento la configuración de los tres principales archivos:
Descriptor de Despliegue: web.xml
Dispatcher Servlet: dispatcher-servlet.xml
Application Context: applicationContext.xml
El ejemplo está desarrollado con la base de datos EUREKABANK que normalmente utilizo en mis cursos.
SQL SERVER ORACLE MYSQL JAVA JDBC MVC DAO PATRONES ANDROID SERVLETS JSP WEB JAVASCRIPT JSON
DESCRIPCIÓN
En este video te explico cómo ejecutar el código fuente de una aplicación Java Web, utilizando HTML, CSS, JavaScript, AJAX y JSON, base de datos MYSQL y Spring Framework.
IMÁGENES DEL APLICATIVO
A continuación te muestro algunas imágenes del aplicativo.
Como docente de programación, una de las preguntas que los estudiantes realizan con mucha frecuencia es:
¿Cómo empiezo el proyecto?
La mayoría que se inicia en programación, como es lógico, no tiene claro cómo debe iniciar su proyecto, esto se complica aún más cuando su primer profesor le indica que realice una ventana, y para programarla debe hacer doble click en el botón y empiece a programar.
Pienso, que una parte del problema está en que lo primero que se enseña a los futuros programadores es poner el código de la lógica de un requerimiento en el evento click de un botón, por lo tanto, creen que es así como se debe programar todas las ventanas que requiere su aplicación.
Este estilo de programación no creo que sea el más adecuado, tiene muchos problemas, como por ejemplo:
Repites bloques de código en varias partes de tu aplicación, esto dificulta su mantenimiento.
El mantenimiento de la aplicación rápidamente se vuelve complicado, en muy poco tiempo, tu aplicación se parece más al juego de Jenga.
Escalar tu aplicación, por ejemplo, de Cliente-Servidor a Web se hace prácticamente imposible.
Si cuando estas a la mitad de un proyecto, te cambian de motor de base de datos, actualizar el código se hace una tarea muy complicada.
Voy hacer referencia a Danny Thorpe:
Programar sin una arquitectura en mente es como explorar una gruta sólo con una linterna: no sabes dónde estás, dónde has estado ni a dónde vas.
Pienso que primero debemos pensar en una arquitectura, por ejemplo, pensar en dos capas, una capa de servicios (service) donde se implemente la solución del problema a resolver, y una capa para la interfaz de usuario (view).
Pensar en una capa de servicios para implementar la solución de un requerimiento o problema da muchas ventajas, entre las cuales tenemos:
Permite concentrarnos en la solución.
Facilita las pruebas, algo que no debes dejar de hacer.
Tu solución puedes escalarla fácilmente.
El mantenimiento del código es más fácil.
En el siguiente artículo estaré desarrollando un ejemplo ilustrativo.
CODIGO FUENTE
En esta sección te presento un video que una aplicación CLIENTE-SERVIDOR.
Tú tienes acceso al código fuente de esta aplicación, después del video tienes el enlace.
Manejar un programa para la gestión de versiones de tus proyectos de software es fundamental.
GIT es quizás en este momento el software para manejar versiones mas utilizado.
GitHub es un repositorio en web que te permite manejar proyectos gratuitos y privados. Existen otras versiones pero GitHub creo que es el mas utilizado.
En esta oportunidad te presento una manual del uso de Git y GitHub, espero que te sea útil.
MANUAL
CODIGO FUENTE
En esta sección te presento un video que una aplicación JAVA WEB.
Tú tienes acceso al código fuente de esta aplicación, después del video tienes el enlace.