Duda sobre persistencia de objetos en RDBMS

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Duda sobre persistencia de objetos en RDBMS

Giuseppe
Hola a todos,

Estoy haciendo mis pinitos con BBDD desde Smalltalk, y me estoy haciendo
un cacao de cuidado. Me gustaría exponeros el ejemplo que he creado,
para ver si voy encaminado o qué estoy haciendo mal, porque..no lo
veo.... (hablo de memoria, no estoy en casa ahora mismo)

Tengo un Objecto Factoría, que contiene dos variables de instancia.
conexion y usuarios

Al crear la instancia de Factoría, ésta, crea un objeto DBXConnection y
lo asigna a la instvar conexion.
Factoría, tiene un método de instancia
nuevoUsuarioID: unID conNombre: unNombre apellidos: unApellido

Cuando éste método es llamado, hace un
self conexion connectAndOpen.
self conexion execute: 'insert into usuarios(id_usuario, nombre,
apellidos)
values(',unID,',','''',unNombre,'''',',','''',unApellido,''')'.
self conexion disconnect.

Independientemetne de los errores que me dió, y que no paré a mirar
correctamente, debido a la hora que era, me dá la sensación, basándome
en todo lo visto hasta ahora en SMalltalk, una solución elegante.

Ésta es la manera correcta?

En los ejemplos de SqueakDBX, son sentencias sueltas, y no me sirven
como ejemplos para aplicar a un modelo real. Luego tengo muchas dudas,
qué pasa cuando cierro la imágen? cuando recupera las datos?
etc..etc..etc.. pero las dudas deben ir en orden..

Según los consejos de Germán, descargué SmallPOS, que no he hecho
funcionar ahora porque depende de SPStandardFiles que no encuentro aún
donde está esa clase, ya que usa SqueakDBX si no recuerdo mal, para ver
como trabajar ese paquete la persistencia, pero me tiré más de una hora,
sólo para instalar Seaside30 y demás dependencias, para que no terminara
de cuajar de todas maneras.

Un saludo y mil gracias.

Reply | Threaded
Open this post in threaded view
|

Re: Duda sobre persistencia de objetos en RDBMS

EstebanLM
Hola Giuseppe,
así rápido (no tengo mucho tiempo, disculpas): lo que estas haciendo funciona, pero es muy ineficiente  (estas abriendo una conexión cada ves que vas a ir a la base de datos). Lo más razonable es que hagas #openAndConnect una sola vez y mantengas la conexion abierta mientras tu aplicación esté corriendo.
Otra cosa, si vas a a hacer una aplicación web, tal vez en lugar de abrir una sola conexión te sirva usar un pool de conexiones (dbxtalk tiene uno que se puede usar). De cualquier forma, eso se puede resolver más adelante, no hay ninguna necesidad de preocuparse ahora mismo :)

saludos,
Esteban

El 04/07/2011, a las 7:35a.m., Giuseppe Luigi escribió:

> Hola a todos,
>
> Estoy haciendo mis pinitos con BBDD desde Smalltalk, y me estoy haciendo
> un cacao de cuidado. Me gustaría exponeros el ejemplo que he creado,
> para ver si voy encaminado o qué estoy haciendo mal, porque..no lo
> veo.... (hablo de memoria, no estoy en casa ahora mismo)
>
> Tengo un Objecto Factoría, que contiene dos variables de instancia.
> conexion y usuarios
>
> Al crear la instancia de Factoría, ésta, crea un objeto DBXConnection y
> lo asigna a la instvar conexion.
> Factoría, tiene un método de instancia
> nuevoUsuarioID: unID conNombre: unNombre apellidos: unApellido
>
> Cuando éste método es llamado, hace un
> self conexion connectAndOpen.
> self conexion execute: 'insert into usuarios(id_usuario, nombre,
> apellidos)
> values(',unID,',','''',unNombre,'''',',','''',unApellido,''')'.
> self conexion disconnect.
>
> Independientemetne de los errores que me dió, y que no paré a mirar
> correctamente, debido a la hora que era, me dá la sensación, basándome
> en todo lo visto hasta ahora en SMalltalk, una solución elegante.
>
> Ésta es la manera correcta?
>
> En los ejemplos de SqueakDBX, son sentencias sueltas, y no me sirven
> como ejemplos para aplicar a un modelo real. Luego tengo muchas dudas,
> qué pasa cuando cierro la imágen? cuando recupera las datos?
> etc..etc..etc.. pero las dudas deben ir en orden..
>
> Según los consejos de Germán, descargué SmallPOS, que no he hecho
> funcionar ahora porque depende de SPStandardFiles que no encuentro aún
> donde está esa clase, ya que usa SqueakDBX si no recuerdo mal, para ver
> como trabajar ese paquete la persistencia, pero me tiré más de una hora,
> sólo para instalar Seaside30 y demás dependencias, para que no terminara
> de cuajar de todas maneras.
>
> Un saludo y mil gracias.
>
>

Reply | Threaded
Open this post in threaded view
|

Re: Duda sobre persistencia de objetos en RDBMS

Giuseppe
El lun, 04-07-2011 a las 09:34 -0300, Esteban Lorenzano escribió:
>  
> Hola Giuseppe,
>
> así rápido (no tengo mucho tiempo, disculpas): lo que estas haciendo
> funciona, pero es muy ineficiente  (estas abriendo una conexión cada
> ves que vas a ir a la base de datos). Lo más razonable es que hagas
> #openAndConnect una sola vez y mantengas la conexion abierta mientras
> tu aplicación esté corriendo.

Si, también es verdad, es la manía de trabajar con terminales que no
estén online continuamente, pero trabajen con bases de datos remotas.

> Otra cosa, si vas a a hacer una aplicación web, tal vez en lugar de
> abrir una sola conexión te sirva usar un pool de conexiones (dbxtalk
> tiene uno que se puede usar). De cualquier forma, eso se puede
> resolver más adelante, no hay ninguna necesidad de preocuparse ahora
> mismo :)

Aham, intentaré investigar que es eso de los pools :P

Lo que más me preocupa, es la metodología correcta de trabajo de los
objetos a la hora de persistir, Quien debe persistir, cuando cargo la
información, donde, etc.... es decir, si el objeto factoría, tiene una
instvar usuarios, esa instvar usuarios, sería, una colección de objetos
Usuario, creada a partir del Select, correcto?, es decir, cada vez que
llamara a usuarios, tendría que hacer la consulta, y recrear la
colección? pero qué pasa entonces con esos datos cuando la petición la
hace otro navegador?
Trabajando con persistencia en la imágen lo entiendo, porque los datos
ya están ahí, al cerrar abrir la imágen, los datos no se van a ningún
sitio...es estando en la BBDD donde me hago un lío.

Siento las preguntas novatas, pero no estoy acostumbrado a este tipo de
metodología, y no encuentro un caso real que usar como ejemplo. Es
cuestión de conseguir cambiar el chip, y todo irá sobre ruedas :D