Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-05-2006
Avatar de waltergomez
waltergomez waltergomez is offline
Miembro
 
Registrado: may 2006
Posts: 202
Poder: 18
waltergomez Va por buen camino
Pedido a los miembros de Foro

Hola a todos,

Hace un tiempo que tengo ganas de iniciar un proyecto para que usen otros desarrolladores y me incline por un motor de persistencia para Delphi.
Esto recien empieza y tengo escrito muy poco, pero si alguien me envia informacion al respecto o que caracteristicas consideren importantes en lo referente a persistencia sera muy agradecido.
Todo suma, ejemplos, otros desarrollos exitentes, url, articulos, tutoriales, etc.
Muchas Gracias.

Walter Gomez
Responder Con Cita
  #2  
Antiguo 16-05-2006
Avatar de ElKurgan
[ElKurgan] ElKurgan is offline
Miembro Premium
 
Registrado: nov 2005
Posts: 1.234
Poder: 20
ElKurgan Va camino a la fama
Algunas direcciones:

sourceforge Delphi Persistent Object:
http://sourceforge.net/projects/depo

Object Persistence Framework for Object Pascal :
http://groups.yahoo.com/group/JEDI-Obiwan

Spider Object Database:
http://www.intervalsoftware.com/products.html

TechInsite Object Persistence Framework:
http://www.techinsite.com.au/Default.htm

Para empezar, creo que con estas vale..
Un saludo
Responder Con Cita
  #3  
Antiguo 16-05-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.276
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Busca documentación de Scott Ambler y Joanna Carter. Tienen bastante sobre el tema.
Para empezar puedes mirar:
Introducción genérica a los OPF's
Diseño de una capa de persistencia para BD relacionales
Cómo mapear los objetos sobre una BD relacional
Aquí tienes otro diseño de OPF de Robert Dawson
Instant Objects (SourceForge), OPF para Delphi/Kylix/FPC

En general, por internet puedes encontrar bastante información; Mucha sobre Java y bastante menos sobre Delphi, pero si biscas se puede encontrar para empezar.

Si tienes dudas concretas, puedes preguntar, yo he trabajado diseñando OPF's y te puedo hablar sobre mi experiencia personal pero,siempre sobre algo concreto, ya que el tema es muy amplio.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.

Última edición por Neftali [Germán.Estévez] fecha: 17-05-2006 a las 10:18:39.
Responder Con Cita
  #4  
Antiguo 16-05-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Algo le pasa al enlace de Robert Dawson.

Mi opinión sesgada Para empezar yo omitiría a Joanna Carter. Tiende a hacer infinitamente complicadas las cosas más sencillas. Aún así, tanto lo que ella escribe como muchos otros, hay mucho material suelto en los grupos de noticias de borland (el de oodesign) que pueden buscar via google o tamaracka.

// Saludos

Última edición por roman fecha: 16-05-2006 a las 18:24:57.
Responder Con Cita
  #5  
Antiguo 17-05-2006
Avatar de waltergomez
waltergomez waltergomez is offline
Miembro
 
Registrado: may 2006
Posts: 202
Poder: 18
waltergomez Va por buen camino
Muchisimas gracias a todos y cuando tenga un beta lo publico.

Salu2,

Walter.
Responder Con Cita
  #6  
Antiguo 17-05-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.276
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por roman
Algo le pasa al enlace de Robert Dawson.
Le pasaba, que yo lo había puesto mal.
Corregido.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #7  
Antiguo 17-05-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Propiamente habría entonces que especificar que se trata de material de Phillip Brown más no de Robert Dawson.

// Saludos
Responder Con Cita
  #8  
Antiguo 09-07-2006
lsg lsg is offline
Miembro
 
Registrado: jul 2006
Posts: 24
Poder: 0
lsg Va por buen camino
Yo tengo mi propio Framework

En base al framework de Phillip Brown yo he desarrollado mi propio framework de persistencia.

Que ademas interactua con mi propio framework visual (o sea, con forms heredados, etc).

Solo que lo comercializo, ya que me ha llevado muchisimo esfuerzo y creo que vale la pena.

Si alguien esta interesado, no dude en consultarme.
solution@interlap.com.ar
Responder Con Cita
  #9  
Antiguo 10-07-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.276
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por lsg
...solo que lo comercializo, ya que me ha llevado muchisimo esfuerzo y creo que vale la pena.
¿Y se puede ver alguna demo o similar? ¿Tienes página Web? ¿Documentación?
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #10  
Antiguo 10-07-2006
lsg lsg is offline
Miembro
 
Registrado: jul 2006
Posts: 24
Poder: 0
lsg Va por buen camino
Lamentablemente, todavia no he tenido tiempo de armar una documentacion ni de publicarlo en mi web www.solutionline.com.ar

Cuando pueda lo haré.

Si estas en Argentina, podria mostrartelo, o la otra posibilidad es mostrarlo remotamente con un Remote Administrator.

Ademas, este tipo de programacion necesita de mucho codigo, y ya no de componentes TDataset para hacer los diferentes selects, por lo que he creado con Delphi un pequeño ejecutable que en pocos segundos, en base a unos parametros que le indico, me arma todo el codigo de una clase (Entidad), ahorrandome mucho tiempo.

Estoy a disposicion de uds.

PD: En estos dias justamente estoy de project leader en una empresa donde migraremos su sistema con varios modulos originalmente hechos en Clipper hacia Delphi 7 con mi framework de persistencia y visual.
Responder Con Cita
  #11  
Antiguo 11-07-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.276
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por lsg
...Ademas, este tipo de programacion necesita de mucho codigo, y ya no de componentes TDataset para hacer los diferentes selects, por lo que he creado con Delphi un pequeño ejecutable que en pocos segundos, en base a unos parametros que le indico, me arma todo el codigo de una clase (Entidad), ahorrandome mucho tiempo.
Lo se. Mi interés es porque yo también estoy en el mismo tema que tú. En mi caso, el que tengo entre manos es el segundo frame de persistencia en el que trabajo (el primero fue para otra empresa).
Me gustaría comentar algunas cuestiones y decisiones que has tomado, problemas que te has podido encontrar, mapeo de tablas en Base de Datos que has escogido, cómo implementas los OID's (Identificadores de objetos), navegación entre objetos, cómo realizáis las busquedas, controles estandar de Base de Datos o propios, multiidioma,... (se me ocurren uchas más )


Cita:
Empezado por lsg
...en base a unos parametros que le indico, me arma todo el codigo de una clase (Entidad), ahorrandome mucho tiempo
En nuestro caso es a partir de los diseños en Rational Rose. Generamos el código de las clases y los Scripts para Base de Datos.

Cita:
Empezado por lsg
...donde migraremos su sistema con varios modulos originalmente hechos en Clipper hacia Delphi 7 con mi framework de persistencia y visual.
¿No será la misma empresa?
Es broma, es que esta gente también trabajaba anteriormente con Clipper.

Un saludo.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #12  
Antiguo 11-07-2006
lsg lsg is offline
Miembro
 
Registrado: jul 2006
Posts: 24
Poder: 0
lsg Va por buen camino
Bien.

OIDs: utilizo un unico OID por Base de datos, por registro.
Tengo un generador de IDS (una clase dentro del propio framework) que se reserva 15 ids, y una vez reservados nadie puede utilizarlos. Cuando necesita mas, vuelve a buscar otros 15.
Controles: Utilizo unas grillas comerciales, si bien podrian utilizarse otras.

Si bien trabajo con objetos, Una vez mapeada la tabla en el objeto, el mismo es mapeado en un ClientDataset, para poder manipular sus datos con controles DBAware. Y luego, vuelve del ClientDataset al objeto, y del objeto a la base de datos.

El ClientDataset lo utilizo con Fields creados por mi. No estan conectados a base de datos.

Las busquedas las realizo empezando el search por uno de los TPDList ( o lista de Objetos). Luego voy pidiendo mas datos.

Tengo ya una estructura armada y soporta multiidioma, aunque uno debe tomarse el trabajo de armar el diccionario y luego volcar sobre la parte visual cada palabra o mensaje.

Ademas, mi framework, crea Forms con un factory pattern. No del modo tradicional.

Y el Main Menu, es dinamico, se crea en base a la estructura que se declare en ciertas tablas de la base de datos.
Ademas con perfiles de usuario.

Los forms, ya instrumentan metodos heredados para manipular el mapeo de objetos hacia el Tclientdataset y viceversa.

Tambien utilizo frames, (con mismos metodos para manipular objetos/clientdataset) que sirven para armar master/details.

Un problema que tuve, fue que al declarar properties/fields de las clases, como string, integer, TdateTime, etc, fue que no podia asignar el valor null cuando queria. Asi que tuve que crear mis propios tipos de datos, que son todos variants, pero cada uno con el nombre TString, TEntero, TFecha, TFechaHora, etc.

Otro problema, y sin solucion por el momento, es que no puedo utilizar Blobs.
Pero no es algo dramatico. Cuando necesito manejo de imagenes guardo la ruta de las imagenes.


Como funcionalidad adicional, grabo un log de cada sentencia SQL ejecutada, con el dato de que usuario lo grabó. Lo que me permite replicar la base de datos si lo deseo, o revisar que sucedio, o volver hacia atras alguna operacion quiza.

Bueno, espero que haya aclarado alguna de tus dudas.

Un abrazo
Responder Con Cita
  #13  
Antiguo 11-07-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.276
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por lsg
OIDs: utilizo un unico OID por Base de datos, por registro.
Tengo un generador de IDS (una clase dentro del propio framework) que se reserva 15 ids, y una vez reservados nadie puede utilizarlos. Cuando necesita mas, vuelve a buscar otros 15.
Ya me lo supongo (lo de únicos); Me refería al tipo de Datos. en mi caso son enteros largos (64b), pero he visto akgunos modelos que usan alfanuméricas. Tipo GUID.

¿Qué tipo de mapeo de tablas utilizáis? Los 4 que más se utilizan son:En mi caso, en el anterior implemeté el caso 2, y experimenté algunos problemas y en el actual hemos implementado el caso 3 y la mejora ha sido considerable.

Cita:
Empezado por lsg
(1) Tambien utilizo frames, (con mismos metodos para manipular objetos/clientdataset) que sirven para armar master/details.
(2) Un problema que tuve, fue que al declarar properties/fields de las clases, como string, integer, TdateTime, etc, fue que no podia asignar el valor null cuando queria. Asi que tuve que crear mis propios tipos de datos, que son todos variants, pero cada uno con el nombre TString, TEntero, TFecha, TFechaHora, etc.
En ambas cosas coincidimos también, aunque en mi caso son los fields están definidos como TValueFieldBoolean/TValueFieldBooleanDef, TValueFieldInteger/TValueFieldIntegerDef,...

Cita:
Empezado por lsg
Otro problema, y sin solucion por el momento, es que no puedo utilizar Blobs.
Bueno, para ello también tenemos los campos necesarios TValueFieldImage/TValueFieldImageDef y TValueFieldBlob/TValueFieldBlobDef; Como las inserciones se hacen utilizando SQL, para éstos campos se utilizan parámetros en la consulta y no dan problemas.

Cita:
Empezado por lsg
Como funcionalidad adicional, grabo un log de cada sentencia SQL ejecutada, con el dato de que usuario lo grabó. Lo que me permite replicar la base de datos si lo deseo, o revisar que sucedio, o volver hacia atras alguna operacion quiza.
Eso es lo que nosotros llamamos Trazabilidad; Y se puede implementar para las tablas que se necesite de forma dinámica; Se mantienen en el caso de que se active la trazabilidad la tabla paralela con todas las operaciones (I/D/U) que se realizan así como los valores antes y después de del cambio, usuario, fechaHora, máquina,...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #14  
Antiguo 12-07-2006
lsg lsg is offline
Miembro
 
Registrado: jul 2006
Posts: 24
Poder: 0
lsg Va por buen camino
Con Respecto a los mapeos, en mi caso, suelo utilizar la estructura 1 a veces, otras veces la 2. De acuerdo a lo que vea mas conveniente.

La 3 no la conocia ni la probé.

En que has visto que mejora implementar la estructura 3 ?. Me interesa tu opinion.


La 4 me parece horrible.


Los IDs son integer. Ya que los Longint me traian algunos problemas con los ClientDataset que uso en cada form para mapear de objeto a ClientDataset. No recuerdo cual era el problema en este momento.

Última edición por lsg fecha: 12-07-2006 a las 13:14:10.
Responder Con Cita
  #15  
Antiguo 12-07-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.276
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por lsg
La 3 no la conocia ni la probé.
En que has visto que mejora implementar la estructura 3 ?. Me interesa tu opinion.
La 4 me parece horrible.
En realidad es la que se "parece" más a una Herencia de objetos.
Las ventajas frente a las otras es que es mucho más fácil de modificar, las tablas son más pequeñas (ya que cada tabla sólo tiene los campos de esa clase) y eso hace más rápidas algunas operaciones. Pero sobre todo por el tema de modificaciones.

El inconveniente mayor es la generación de consultas, que se hace más compleja.

En ese mismo documento tienes una comparativa simple de las diferentes opciones.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
¿Acaso todos los miembros de este foro somos ateos? <Sergio> Humor 8 26-03-2008 08:31:18
Pedido de Ayuda (Arboles bianrios, pilas y colas) theundertakker Varios 1 07-12-2005 20:03:34
Swichdesktop del foro! marceloalegre Varios 2 19-05-2005 09:37:17


La franja horaria es GMT +2. Ahora son las 14:37:50.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi