Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 4392 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Boa tarde, estou estudando POO e de cara achei um pouco trabalhoso, por exemplo, me deparei com uma tabela com mais de 100 campos, então criar as classes para uma tabela assim se torna algo complicado, de qualquer forma continuo estudando, más dai pensei em uma ferramenta que facilite este trabalho de abstração de informações de uma tabela e gera as classes de negócios e de persistência.

Então descobri que já existem frameworks que fazer isso, tem o TMS Aurellius, DoRM, AquaSoft entre outros, ocorre que a maioria dos mesmos está voltada para versões superiores ao Delphi 2009, sendo assim quem tem versão anterior já teria de procurar outras soluções, até encontrei como é o caso do InstantObjects(indicado por EMBarbosa( http://stackoverflow.com/questions/4224 ... lphi-win32)).

Então estive lendo e estudando um pouco sobre estes frameworks ORM e confesso que achei interessante, pois o mesmo agiliza bastante o processo de desenvolvimento orientado à objetos, eliminando várias etapas do desenvolvimento, mesmo com tudo isso trabalhar com tabelas muito grandes ainda continua sendo algo complicado(TA PARECENDO COISA DE PREGUIÇOSO RECLAMANDO DO TRABALHO, KKK).

Então resolvi criar uma ferramenta que se conecta há um banco de dados(no momento MySQL 5.x) e abstrai as informações das tabelas e gera a classe de negócios e de persistência, isso já está pronto, com poucos cliques do mouse você cria as duas classes independente da quantidade de registros da tabela, já com Insert, Update, Delete e Select.

Agora estou querendo fazer com que a ferramente trabalho com relacionamentos do banco, más estou com dúvida de que forma isso pode ser feito, por exemplo:

Tabela01

---------------

Id : integer

Field01 : Varchar(10)

Tabela02

---------------

Id: integer

IdTabela01 : integer;

Field01 : Varchar(30)

Como pode ser visto existe o relacionamento entre a Tabela01 e Tabela02 de 1 : N, más não tenho uma ideia fixo de como isso ficaria dentro da classe.

Acredito que na classe da Tabela01 eu devo ter um atributo do tipo Tabela02 pois assim eu consigo "resgatar" informações da Tabela02 dentro do objeto Tabela01, imagino que eu deveria trabalhar com indices, assim eu poderia ter vários objetos do tipo Tabela02 no objeto Tabela01, porem não consigo visualizar como isso ficaria no código, agradeço a ajuda de todos!

Postado

Hehe, realmente isso é complicado.

Por esses e outros problemas que eu resolvi criar o meu próprio framework. Nesse meu framework, usei técnicas recursos como Abstract Factory, Factory e Abstract Object, com isso, meu sistema independe de qual banco de dados você quer usar e, além disso, não é necessão escrever comandos SQL pois o próprio framework já faz isso automaticamente.

Aconselho você a tentar algo parecido.

  • Curtir 1

Sistemas para toda área Goumert, pequeno varejo e baladas.

www.controleautomacao.com.br

Postado

Daniel, na realidade é isso que estou fazendo, só que no momento estou focado no banco que trabalho que é o MySQL, más a ideia claro é que seja independente de banco, como explicado anteriormente, a aplicação já faz o trabalho de "mapeamento" da tabela, gera a classe de negócios, gera a classe de persistência(DAO), e na classe de persistência(DAO) já gera Inset, Update, Delete e Select, estou com dúvida apenas como fica uma classe no caso de relacionamento, sei que na classe deve haver uma propriedade do tipo das classes onde houver FK, acredito tambem que isso deve ocorrer com indexação, porem não compreendo bem como desenvolver isso.

Postado

Achei o assunto bem interessante...

Baixei o arquivo que mencionou...porem não consegui entender...em que momento ele cria os insert, delete, etc...

Ja que dentro dos arquivos ele ta fazendo apenas select com o ID..

Vi o video...e realmente parace ser algo show de bola..

Att.:

W7 Soluções
Ricardo Mendes
Analista/Programador
Skype: ricardo_w7
[email protected]

Postado

ricardomendes, quem cria Insert, Update, Delete e Select é a aplicação do video, no arquivo denominado "classXXXX.pas" contem apenas as regras de negócio, quem trata da parte de banco de dados propriamente dito é a classe de persistência("classXXXXXDAO.pas"), observe bem, se você for debugar verá que isso ocorre no momento do Insert, quando vc da o Insert clicando no botão, você verá que o insert dessa classe na realidade referencia outro insert da classe DAO.

Postado

Eneias...é isso que não to entendendo...

nesse trecho do codigo

function TPedidosDAO.Insert(oPedidos : TPedidos) : Boolean;

begin

Result := False;

with FSQLPedidos do

begin

Close;

SQL.Clear;

SQL.Add('Select * From Pedidos');

SQL.Add('Where(Pedido = :Pedido)');

Open;

Insert;

FieldByName('Data').Value := oPedidos.Data;

Post;

oPedidos.Pedido := FieldByName('Pedido').AsInteger;

Result := True;

end;

end;

Seria a parte responsavel pelo insert...so que aqui so tem comando sql de select...

Att.:

W7 Soluções
Ricardo Mendes
Analista/Programador
Skype: ricardo_w7
[email protected]

Postado

Eneias...é isso que não to entendendo...

nesse trecho do codigo

function TPedidosDAO.Insert(oPedidos : TPedidos) : Boolean;

begin

Result := False;

with FSQLPedidos do

begin

Close;

SQL.Clear;

SQL.Add('Select * From Pedidos');

SQL.Add('Where(Pedido = :Pedido)');

Open;

Insert;

FieldByName('Data').Value := oPedidos.Data;

Post;

oPedidos.Pedido := FieldByName('Pedido').AsInteger;

Result := True;

end;

end;

Seria a parte responsavel pelo insert...so que aqui so tem comando sql de select...

Veja bem, após abrir o dataset(Open) imediatamente eu dou o Insert, e após passar os valores para o dataset executo o Post.

  • 1 mês depois ...
Postado

Gostaria de saber se esse processo está em andamento...não vi mais nada...

Ainda não consegui entender o funcionamento...

Se tiver skype...poderiamos marcar de vc me explicar ...

Obrigado..

Att.:

W7 Soluções
Ricardo Mendes
Analista/Programador
Skype: ricardo_w7
[email protected]

  • Este tópico foi criado há 4392 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.