Sun Campus Ambassador Chile "Innovation Happens Everywhere". A Blog by Rodrigo Andueza
Rodrigo Open World
Archivos
« junio 2009
lunmarmiéjueviesábdom
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
     
       
Hoy
Click me to subscribe
Search

Enlaces
 

Las visitas de hoy a la página: 19

« Oracle Day Chile, un... | Main | The Open Java Commun... »
martes oct 16, 2007
Procedimientos Almacenados en Java DB con Netbeans.

Los procedimientos almacenados son un herramienta que ha estado presente desde hace ya un buen tiempo los principales motores de bases de datos para poder encapsular lógica de aplicación y además SQL dentro del motor. Las ventajas de poder ocupar los procedimientos almacenados dentro un sistema son variadas, pero principalmente con el hecho de encapsular lógica dentro de ellas ayuda a tener bajos niveles de acoplamiento, y altos niveles de cohesión considerando los objetos que estamos haciendo persistentes dentro de nuestra aplicación.

Java DB, la versión soportada por SUN de Apache Derby, cuenta con varias funcionalidad des gran interés, tal como funcionar en modo “endebido” o cliente/servidor, soporte para tipos de datos BLOB and CLOB, entre otras... Pero es la capacidad de poder crear procedimientos almacenados lo que ahora nos ha interesado, sobre todo desde el punto de vista que los procedimientos almacenados que se crean en Java DB son hechos en Java. Esta capacidad de crear procedimientos almacenados en Java, que han ganado gran popularidad en grandes motores como Oracle, tiene varias ventajas comparativas con respecto a los procedimientos tradicionales:

Primeros pasos.

Si bien es cierto JavaDB viene por defecto con el JDK 1.6, para esta ocasión ocupare la versión de Java DB que se integra con Netbeans y el Enterprise Pack, donde vienen algunas bases de datos de ejemplo como “travel”.

Para verificar si tenemos instalada la interfaz para el manejo de Java DB, debemos ir al menú “Tools” y verificar que aparezca “Java DB Database”.
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ahora crearemos un nuevo proyecto Java del tipo Java Application llamado “JavaStoredProcedure”.  Ahora dentro de el crearemos una clase llamada “ProcedureTest” donde pondremos el código para nuestro procedimiento almacenado.   En este caso el procedimiento almacenado simplemente consulta algunos datos de la base de datos “travel” según el parámetro que le estoy dando que corresponde a un ID de persona. 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ahora agregamos el siguiente código para la clase:

 
 public class ProcedureTest {
    
    /** Creates a new instance of ProcedureTest */
    public ProcedureTest() {
    }
    
    public static void getNombre(int id, ResultSet[] rsOut) {
        
     try{   
        
        Connection conn = DriverManager.getConnection("jdbc:default:connection");
        PreparedStatement ps1 = conn.prepareStatement("SELECT NAME FROM PERSON WHERE PERSONID=?");
        ps1.setInt(1, id);
        rsOut[0] = ps1.executeQuery();
        conn.close();
     }
     catch(SQLException e){
        System.err.println(e.toString());
     }
        
    }
    
    
}

 

 

 

 

Ahora es muy importante para poder después ingresar este procedimiento dentro de la base de datos empaquetar la clase en un JAR.  En el caso de Netbeans lo realiza de manera automática, verificándolo en las propiedades del proyecto.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Una vez construida y empaquetada la clase, debemos realizar las operaciones sobre la base de datos.   Para eso vamos a iniciar la instancia de “travel” y abrir una nueva ventana para la ejecución de comandos.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ahora para poder ingresar este procedimiento debemos crear primero el procedimiento dentro de la base de datos que “enmascarara” al procedimiento que está hecho en Java.  De aquí cabe destacar que en este caso tenemos solo 1 “Dynamic Result Set”, ya que este va a depender de las preguntas que estemos realizando a la base de datos y la definición que hicimos en nuestro código Java donde dimos como parámetro 1 resultset de salida.   Ademas el “External Name” corresponde al nombre de la clase y el método que generamos como procedimiento almacenado.

 
 

CREATE PROCEDURE GET_NOMBRE(IN id INTEGER)

PARAMETER STYLE JAVA

LANGUAGE JAVA

READS SQL DATA

DYNAMIC RESULT SETS 1

EXTERNAL NAME 'ProcedureTest.getNombre'

 Una vez ejecutado esto con éxito, debemos ocupar el comando SQLJ.INSTALL que se encarga de cargar el JAR que contiene nuestro procedimiento almacenado en la base datos.  El primero parámetro que recibe corresponde a la dirección donde se encuentra el JAR a instalar(dar la ruta completa) y el segundo corresponde al contexto del procedimiento creado en la base de datos, es decir, “ESQUEMA.CLASE”.

 

CALL SQLJ.install_jar('C:\Documents and Settings\Administrador\Mis

documentos\NetBeansProjects\JavaStoredProcedure\dist\JavaStoredProcedure.jar', 'travel.ProcedureTest', 0);
 
Ahora que tenemos ya instalado el procedimiento dentro de la base de datos debemos setear el classpath de JavaDB para que sepa que existe ese procedimiento dentro del conjunto de librerías de la base de datos.  Para eso usamos el comando SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY, donde recibe como parámetro la llave que estamos agregando que corresponde a “derby.database.classpath” y el segundo es al igual que en el paso anterior, el esquema mas la clase que contiene el o los métodos.

 
 CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.classpath', 'travel.ProcedureTest');

 Ahora a probar...

Posted at 10:57PM oct 16, 2007 by Rodrigo Antonio Andueza Gallar in Java  |  Comentarios[8]

Comentarios:

Estimado, realice los pasos que indicaste, pero desde "CALL SQLJ.install_jar('C:\Documents and Settings\Administrador\Mis

documentos\NetBeansProjects\JavaStoredProcedure\dist\JavaStoredProcedure.jar', 'travel.ProcedureTest', 0);"
tuve problemas, ya que no me funciono el comando call sql..., me podrias explicar con mas detalle como ejecutar ese paso??

Muchas Gracias

Enviado por Carlos en noviembre 30, 2007 a las 10:01 AM CLST #

esta weno pero mas claro... acuerdate que tenemos tarea de esto y x lo que veo el viernes veras masacre xk nadie cacha como hacerl sp ni triggers nisiquiera vistas

aunque sea una ayudita

Enviado por yo en diciembre 05, 2007 a las 01:21 PM CLST #

Bakn!! lo que estaba buscando gracias.. y sigue aportando!! nos ayudas mucho.

Enviado por Antonio en mayo 16, 2008 a las 02:14 PM CLT #

Hijo Puta

Enviado por Manu Tenorio en mayo 21, 2008 a las 04:11 AM CLT #

Hola, muchas gracias por tu articulo, esta muy padre. Solo tengo una duda, espero me puedas ayudar. No se, si me podrias dar unas ligas o articulos que hablen mas sobre SP con java, te lo agradesere mucho.

Enviado por Luis Angel en julio 28, 2008 a las 02:08 PM CLT #

Buenas, una consulta, una vez que creamos todo esto, como puedo probar el procedimiento?

Enviado por Michael Pérez en agosto 01, 2008 a las 10:52 AM CLT #

MAMAVERGA

Enviado por 192.188.49.5 en septiembre 30, 2008 a las 08:50 PM CLT #

puta cabron

Enviado por 216.184.123.107 en noviembre 13, 2008 a las 10:27 PM CLST #

Enviar un comentario:
  • Sintaxis HTML: Deshabilitado