Disclaimer: Eu sei que muita gente odeia mapeamentos e geradores de código. :-)
Normalmente se fala em Mapeamento Objeto-Relacional, que a grosso modo consiste em pegar um modelo O-O (modelado talvez em UML) e gerar um modelo E-R. A modelagem é feita pensando em objetos e quem modela a camada de persistência que se vire depois pra encaixar tudo numa DDL. A idéia é fazer o caminho inverso: fazer o modelo de dados PRIMEIRO e depois gerar um conjunto de classes. Cada tabela vira uma classe, cada tupla vira uma instância, cada coluna vira uma propriedade. O objetivo é facilitar a vida do programador para algumas tarefas simples e repetitivas: carregar um objeto por sua(s) PK e depois atualizar ou deletar este objeto, por exemplo. Os SELECT mais complexos continuam sendo feitos em SQL, as VIEWs continuam sendo usadas normalmente. Não seria uma O-O de verdade, mas apenas um wrapper para simplificar as tarefas. O grande problema das camadas de persistência é que nunca se sabe a qualidade do SQL gerado e é relativamente fácil para o programador usar alguma classe de forma a gerar SQL ruim (ou mesmo péssimo). No entanto, a maioria dos SQL usados pelas telas de cadastro em uma aplicação comercial são simples. Nesses casos, um "SELECT <campos> FROM cliente WHERE codigo = 1234" pode ser gerado automaticamente de maneira eficiente. Da mesma forma, um "UPDATE cliente SET nome = 'Zeca' WHERE codigo = 1234" ou um "DELETE FROM cliente WHERE codigo = 1234" podem ser gerados automaticamente sem problemas. Escrevi em 2003 uma OPF e um Gerador de Código que faz exatamente isso para Delphi e FPC. Até agora, as vantagens têm superado as desvantagens com folga... :-) O programador não perde tempo com os SQL triviais (que acabam sendo em grande volume), podendo dedicar mais atenção aos códigos SQL e PL/pgSQL realmente importantes, mais diretamente relacionados com as regras do negócio. -- Atenciosamente, Alexsander da Rosa Linux User #113925
_______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
