Clique para saber mais...
  Home     Download     Produtos / Cursos     Revista     Vídeo Aulas     Fórum     Contato   Clique aqui para logar | 11 de Julho de 2026
  Login

Codinome
Senha
Salvar informações

 Esqueci minha senha
 Novo Cadastro

  Usuários
140 Usuários Online

  Revista ActiveDelphi
 Assine Já!
 Edições
 Sobre a Revista

  Conteúdo
 Apostilas
 Artigos
 Componentes
 Dicas
 News
 Programas / Exemplos
 Vídeo Aulas

  Serviços
 Active News
 Fórum
 Produtos / Cursos

  Outros
 Colunistas
 Contato
 Top 10

  Publicidade

  [Artigos]  Você Sabe o que é um Framework?
Publicado por rboaro : Quarta, Janeiro 30, 2013 - 08:26 GMT-3 (716 leituras)
Comentários 2 Comentários   Enviar esta notícia a um amigo Enviar para um amigo   Versão para Impressão Versão para impressão
Administrador Framework nada mais é que uma "caixa de ferramentas". Um Framework .NET é uma caixa de ferramentas ( Bibliotecas ) prontas para trabalhar com .NET. O Framework VCL ( sim ele pode ser chamado assim ) é uma coleção de componentes
que trabalham de forma visual sobre o Windows. Framework nada mais é que uma coleção de objetos e classes destinadas a executar determinada tarefa.

Um Framework "ORM" é uma coleção de objetos/classes que tende a facilitar o desenvolvimento Obejto Relacional em um Sistema.

Como podemos ter Framework Web, DS, etc,etc,etc...

Para quem vem do Clipper ... é como se cada LIB ou Library ( Nantucket Tools, CA-Tools ) fosse
um framework.

Para aqueles acostumados com Delphi é como se cada "parte" da VCL inclusa na IDE fosse um Framework ( Quickreport = FW para relatórios, RAVE = FW para relatórios, INDY = FW para Comunicação/Internet, TDBF = FW para acesso direto a DBF’s, ect, ect, ect.. ) e pacotes como a JEDI, RX, RDPrint, são frameworks diferentes, algumas vezes com a mesma finalidade mas com aspectos diferentes.

Voltando ao ORM existem vários ORM disponíveis que não passam de "sabores" para desenpenhar
a mesma premissa : Mapeamento Objeto Relacional.

O que é um mapeamento Objeto Relacional? Eis o X da questão. É uma forma de se possuir um Objeto "Cliente" que possa ser atualizado em um banco de dados ( SGDB ) ou Banco Relacional ( SGDBR ).

SGDB = Sistema Gerenciador de Banco de Dados
SGDBR = SGDB + Relacional

Nem todo sistema de banco de dados é relacional.
Relacional implica em dizer que parte da tarefa do Banco de dados é manter a integridade Referencial entre seus pares. O MySQL até versões anteriores a 4 não era relacional. Apenas um SGDB.
( me corrijam se estou errado ).

Os SGDB reconhecem apenas os conceitos TABELAS/COLUNAS enquanto que um SGDBR faz a ligação de uma tabela/coluna com outra tabela/coluna dizendo que um dado existente em uma delas depende de outra. Em um SGDBR, algumas regras de negócios são aplicadas no SGDB de forma a garantir uma integridade referencial ( um Cliente não pode ser excluído caso tenha pedidos, ou um Pedido deve excluir todos seus itens ).

O ORM transfere parte desta regra para a aplicação fazendo com que um Objeto "Cliente" cheque
se o mesmo possúi pedidos antes de ser excluído. Ou fazendo com que o Objeto "Pedido" exclua seus
itens antes de ser excluído. Percebemos que neste ponto possuímos uma dupliciade de validações do ORM quanto do SGDBR, mas que o mesmo irá funcionar em um SGDB. Isto torna o Sistema mais confiável e apto a ser utilizado com qualquer SGDB mesmo que não Relacional. Em um SGDBR um "Sistema de faturamento" ( um módulo ) pode validar a nível de banco de dados ( Triggers, Procedures, e Constraints ) se o "Sistema financeiro" já incluíu alguma informação.

Em um SGDB "simples" estas premissas estão a cargo do sistema. Tratar tudo via o SGDB Relacional pode ser de extremo custo a manutenção das regras básicas de negócio visto que elas estarão "perdidas" entre triggers/procedures do mesmo e a portabilidade será reduzida pois cada banco possúi sua sintaxe e recurso expecíficos.

Um ORM nada mais é que uma forma de tratar todas as regras de negócido a nível de sistema,
onde cada operação é validada antes de ser executada:

ex : Excluir cliente, pode se não tem pedidos. Se excluir pedidos, tem que excluir os Itens.

O ORM vem para auxiliar a manter estas regras em um único lugar ( no caso a aplicação ).

Um objeto Cliente, ao receber um "delete" checa as regras de negócio ( tem pedidos ? ) antes
de poder ser deletado. Um objeto Pedidos tenta excluir todos os itens antes de ser "deletado".

As implementações a nível do SGDB Relacional podem continuar, possibilitando que o sistema seja mais confiável. Mas se o sistema não for baseado em um SGDB Relacional, o sistema garantirá sua
funcionalidade.

Aqui podemos citar uma nova (velha) confusão : DAO = Data Access Object.

DAO é para servir de CRUD ( Create, Read, Update, Delete ) de uma tabela e também possibilitar
níveis de acesso as informações.

Um framework DAO fará todas as validações antes supostas serem do ORM.

A grande diferença entre os dois esta na premissa que o DAO realizará o CRUD e a checagem da integridade refencial, enquanto que o ORM pode se usufluir do DAO e manter regras mais específicas ao "negócio", como um cliente não pode inserir um
pedido se seu saldo é negativo.

O FW ORM poderá tratar diversas regras de negócio não apenas na questão relacional. Por vezes o ORM se sobrepoe ao DAO ou tem o mesmo incorporado, mas mantendo as funcionalidade distintas.

DAO = CRUD + Integridade Referencial.
ORM = DAO + Regras de negócio.

O grande paradigma para programadores Delphi é se abser das chamadas Tables ( CDS, Query, IBTables, XXXTable, XXXQuery ), que propiciam CRUD de froma direta em qualquer lugar, em função de um Objeto que é inicializado por uma única "unit" e deverá ser utilizado em todas as operações CRUD para manter as regras de negócio e a integridade de forma centralizada.


Caique Rodrigues
Desenvolvimento e suporte a Desenvolvedores
Delphi Win32/64 - Firebird
Embarcadero MVP - Community Evangelist


Comentários Comentários
   Ordem:  
Comentários pertencem aos seus respectivos autores. Não somos responsáveis pelo seus conteúdos.


por: anderson.pereira (anderson-pereira-souza@hotmail.com) : Jan 30, 2013 - 01:30
(Informações sobre o membro | Enviar uma mensagem) http://
Excelente explicação


por: cliodao (cliodao@gmail.com) : Fev 04, 2013 - 10:48
(Informações sobre o membro | Enviar uma mensagem) http://http://
Olá Caique. Parabéns pela contribuição, ela já foi suficiente para sanar parte de minhas infinitas dúvidas ! Agora falando em termos práticos, quando eu programo de forma orientada a objetos, com uma "unit" para cada "objeto", contendo as regras de negócios dos mesmos e, um data-module com as funções CRUD, eu posso dizer que esse conjunto descrito funciona como um FW ORM?? Ou não seria nada disso? Abraço;
  Edição 112

Revista ActiveDelphi

  50 Programas Fontes


  Produtos

Conheça Nossos Produtos

Copyright© 2001-2016 – Active Delphi – Todos os direitos reservados