Re: Parametros en Procedimientos almacenados

From: Ricardo Fuentes Pereira <rfuentesp(at)gmail(dot)com>
To: utaladriz(at)exe(dot)cl, "'pgsql-es-ayuda(at)postgresql(dot)org'" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Parametros en Procedimientos almacenados
Date: 2005-05-13 19:16:58
Message-ID: 4284FD2A.1@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola, y gracias por contestar
Ubaldo Taladriz escribió:

>Te recomiendo utilizar otro mecanismo de persistencia, hibernate es una
>buena opción
>
>
Lo hemos estado pensando en mi equipo de desarrollo, pero aun estamos
evaluando el mecanismo de persistencia a utilizar. Me parece, y esto es
una opinion personal, que aun no hay un standard sobre el cual trabajar
la persistencia en Java, por lo que estoy muy a gusto de la forma como
trabajo.

>En tu caso
>La tabla podrías identificarla como un atributo estático de la clase.
>Ahora para dinámicamente leer las propiedades del objeto puedes utilizar
>reflection y en base a eso obtener el tipo de propiedad y convertirla al
>tipo apropiado en SQL.
>
>
No me ha quedado muy claro esto último que me planteas. Alguna pagina
que visitar para mayor informacion o dar algun ejemplo basico
Saludos

>Saludos
>
>
>El jue, 12-05-2005 a las 17:58 -0400, Ricardo Fuentes Pereira escribió:
>
>
>>Hola.
>>Actualmente estoy trabajando con Java y PostgreSQL en mis proyectos.
>>Utilizo procedimientos almacenados para interactuar con postgresql.
>>Suponiendo que tengo esta tabla en la BD:
>>
>>mi_tabla
>>entero int4
>>cadena varchar
>>
>>Creo una clase analoga a la tabla en cuestion:
>>public class MiTabla {
>> private int entero;
>> private String cadena;
>>
>>// agregar metodos get y set para obtener y establecer atributos
>>}
>>
>>A continuacion, utilizando un patron de diseño, hago que mis metodos de
>>reciban un objeto cuando, por ejemplo, necesito ingresar un registro o
>>fila. Por ejemplo:
>>public int insertMiTabla(MiTabla _miTabla)
>>
>>Y dentro del metodo hago uso de la CallableStatement, entregandole un
>>String como argumento. Este String lo declaro de la sgte forma:
>>String sp = "{? = call insertMiTabla( ?, ? )}";
>>
>>donde despues establezco en el CallableStatement los dos ultimos signos
>>de pregunta con _miTabla.getEntero() y _miTabla.getCadena().
>>Utilizo plpgsql en el otro lado, donde el procedimiento debiera ser asi:
>>
>>CREATE OR REPLACE FUNCTION insertMiTabla(int4, varchar)
>> RETURNS int4 AS
>> '
>> DECLARE _entero ALIAS FOR $1;
>> _cadena ALIAS FOR $2;
>>
>> BEGIN
>> INSERT INTO mi_tabla
>> (entero, cadena)
>>
>> VALUES (_entero, _cadena);
>> RETURN 0;
>> END;
>> '
>> LANGUAGE 'plpgsql' VOLATILE;
>>
>>He aqui el problema. Deseo pasar solo un parametro en el procedimiento
>>almacenado, algo que sea analogo a mi_tabla, para seguir utilizando el
>>patron de diseño (el beneficio de este patron esta dado en que si se
>>agregan/eliminan campos en la tabla, no tenga que modificar mi codigo
>>Java donde haga ingresos/modificaciones de datos, sino que tengo que
>>hacer los cambios en el servidor de la BD :) ).
>>
>>Me imagino que se tendra que crear un tipo complejo. ¿Y cual sera su
>>tipo en Java el cual ira en la declaracion de la sentencia?
>>
>>Espero sus respuestas.
>>
>>Salu2
>>
>>---------------------------(fin del mensaje)---------------------------
>>TIP 8: explain analyze es tu amigo
>>
>>

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Mario Soto Cordones 2005-05-13 20:41:17 Re: USOS DE POSTGRESQL
Previous Message mmiranda 2005-05-13 18:00:10 RE: Secuencias (Consulta) II