Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-02-2012
gustavosv gustavosv is offline
Miembro
 
Registrado: mar 2008
Posts: 51
Poder: 19
gustavosv Va por buen camino
Abstraccion en BD

Hola amigos, tengo la siguiente inquietud y busco alguna orientación para encontrar el mejor camino, pretendo generar una capa de abstracción entre mis clases de tablas de la BD y las instrucciones de actualización de las tablas, me explico, por un lado tengo mi clase TProducto, TCliente que contienen los campos de la respectiva tabla, y pretendo tener en otra clase TCRUDs con las funciones/procedimientos para realizar las actualizaciones CRUD (create, update, delete) de cualquier tabla, p.ej.
Código Delphi [-]
TProducto = class(TConexionClass)
protected
  FpdtId: string;
  FpdtDescripcion: string;
.
..
...
function TProducto.Nuevo: Boolean;
begin
  TCRUDs.Insertar(Self);
end;

y en la clase TCRUDs 

function TCRUDs.Insertar(ObjetoBD: TObject): Boolean;
var
  Query: TADOCommand;
begin
  //  Cómo leo las propiedades del objeto ObjetoBD y sus valores ...?
 
  Query.CommandText := 'INSERT INTO Tabla (..propiedades del ObjetoBD..) VALUES (..valores de las propiedades del ObjetoBD..)
  Query.Execute; 
end;

La pregunta es, cómo puedo implementar p.ej. el método Insertar de TCRUDs de manera tal que lea las propiedades del objeto que se envió como parámetro (ObjetoBD) y sus valores ...?

De antemano, gracias !
Responder Con Cita
  #2  
Antiguo 21-02-2012
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 28
Delphius Va camino a la fama
Lee e investiga sobre persistencia. Existen en el mercado variados frameworks de persistencia. Algunos más complejos que otros, algunos caros... otros baratos, e incluso hasta Open Source.

Si tienes las posibilidad de acceder al libro UML y Patrones de Caig Larman, en los últimos capítulos le dedica un espacio a presentar justo esto. Básicamente, existe un conversor o wraper que asume justamente la tarea de "traducir" un objeto del dominio (que será persistente) a un registro de una tabla. Y a su vez, también lee de la tabla y regresa el objeto del dominio.

Por tanto, por cada objeto del dominio persistente (aquel que posee una representación en la base de datos, y por tanto se almacenará) se diseña una clase conversor apropiada (existe una clase conversor abstracta, obviamente, de la cual se hereda). Luego existe una fachada de persistencia que se encarga de crear y administrar los conversores; vendría a ser, salvando algunas diferencias, la clase TCRUD que defines.
Por lo general, algunos frameworks se apoyan en el uso del patrón proxy para hacer la asociación TClaseDominio <-> TConversorClaseDominio.

Esto es en líneas generales. Recomiendo la lectura de dicho libro te puede ayudar a aclarar ideas.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #3  
Antiguo 22-02-2012
gustavosv gustavosv is offline
Miembro
 
Registrado: mar 2008
Posts: 51
Poder: 19
gustavosv Va por buen camino
Amigo Delphius, gracias por tu respuesta, ya encontré el libro, se bien interesante, voy a leerlo y si encuentro el camino lo estaré comentando en el foro. Gracias !
Responder Con Cita
  #4  
Antiguo 22-02-2012
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: 19.449
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 artículos referentes a Frameworks de Persistencia de Joanna Carter; Hay algunos bastante buenos. Además de los comentados por Delphius.

También tiene varios sobre las diferentes posibilidades para "mapear" los objetos sobre tablas de la Base de Datos.

Es un tema del que ya hemos hablado otras veces en los foros, así que buscando he llegado a este mensaje. Revisa esa documentación.

Aquí tienes los diferentes mapeos a los que hacía referencia antes. Revisa ese hilo.
__________________
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
  #5  
Antiguo 22-02-2012
gustavosv gustavosv is offline
Miembro
 
Registrado: mar 2008
Posts: 51
Poder: 19
gustavosv Va por buen camino
Hola Neftalí, ya revisé algunos y son bastante interesantes. Gracias por las referencias !
Responder Con Cita
  #6  
Antiguo 22-02-2012
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.941
Poder: 27
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Un ORM comercial que ha tenido buenos comentarios:

http://www.tmssoftware.com/site/aurelius.asp

Una forma diferente de ver el problema lo hacen en DataAbstract:

http://www.remobjects.com/da/
__________________
El malabarista.
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
Alguna capa de abstraccion de datos? jlcasih Conexión con bases de datos 1 10-04-2006 20:39:15
Abstracción de aplicación por departamentos adlfv OOP 2 26-10-2005 07:46:38


La franja horaria es GMT +2. Ahora son las 23:39:39.


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