Seguinte…
Parece que o pessoal está comprando a idéia de mapeamento OO mas que o pessoal arruma… lastimável.
Anti-Padrão:
Objetos-Tabelas
Forma-Geral:
Objetos que são persistidos num banco de dados, são o mapeamento direto entre classes e tabelas (e entre campos e atributos).
Contexto:
Primeiro, toma-se um legado com uma estrutura de banco de dados, um tanto quanto discutível: uma tabela que inicialmente servia para atender um sistema passa a atender várias outros. Além disso os sistemas evoluem mas tabela mas sofre modificação. A tabela estão já não carrega o valor semântico esperado.
Então, resolve-se que o sistema precisa ser convertido para OO. Para isso, utiliza-se um serviço de persistência objeto/relacional, mas mapeamento é mera conversão entre tabelas e classes. Desse modo, as classes tem ainda menos significado que as tabelas.
Conseqüência:
Performance sofrível da aplicação. Um monte de queries igualmente sofríveis em alguma variante de sql. Multiplicação de objetos com a criação de objetos de negócio + objetos-tabelas + conversores.
Solução refatorada:
Fazer um mapeamento entre objetos de negócios e tabelas de banco de dados, eliminando o objeto intermediário.
O problema é. Eu não consigo fazer o pessoal acreditar nisso. Então eu gostaria de pedir um favor para quem já tenha feito um mapeamento redondo entre objetos de negócio e tabelas de banco de dados. Post um exemplo aqui de uma classe de negócio que não tem nada a ver com a representação dele no banco de dados e como foi feito o mapeamento.
Desesperadamente,