Aqui na empresa, desenvolvemos um OPF (framework de persistência de objetos)
que funciona em conjunto com um Gerador de Código que faz o caminho inverso:
ele parte do modelo de dados e gera o modelo de classes. Na interface o
usuário pode detalhar os relacionamentos entre as classes e fazer mais
alguns ajustes, se necessário, mas o foco está no modelo de dados, não no
modelo de objetos.

O objetivo principal é o ganho de produtividade: o programador pode usar a
feature de "Auto Complete" da IDE, por exemplo, para selecionar
propriedades. Erros em nomes de colunas do BD causam erros de *compilação*,
aumentando a confiabilidade. O FW também permite carregar o resultado de uma
query em uma lista de objetos com propriedades como Count e IndexOf(pk). Nos
casos mais simples usa-se o método QueryByTemplate( ); para os casos mais
incomuns existe a QueryByFreeSql( ).

Havia um flag para ativar o pattern "lazy loading", mas depois de três anos
de uso resolvemos tornar essa opção DEFAULT e removemos o flag, porque a
diferença de performance é monstruosa. Outra coisa que modificamos foi a
carga de colunas binárias, que por default não é feita quando um objeto é
instanciado. Comparando com os SELECT's feitos à mão, na maioria dos casos
não há diferença de performance. O FW tem inclusive um modo de "debug" que
mostra o SQL que foi gerado.

Nosso maior problema é educar o programador... por exemplo, se ele quer
mostrar uma lista de pedidos com os nomes dos clientes, ele *NÃO* deve fazer
uma query na tabela pedidos e depois varrer, dentro do FOR, mandando exibir
o conteúdo de  lista_pedido[i].Cliente.Nome (pois isso irá gerar um SELECT
pra cada pedido), mas SIM fazer uma query em uma view criada especificamente
para este fim. Claro que é muito fácil o cara ir digitando
"lista_pedido[i]." depois usar o "auto complete" para selecionar "Cliente."
e depois "Nome". Mas isso não é nada que não possa ser resolvido com um
pouco de treinamento ou com disposição para contratar profissionais mais
qualificados (e caros). :-)

Em 16/04/08, Leandro DUTRA <[EMAIL PROTECTED]> escreveu:
>
> 2008/4/15, Nâmio Evangelista <[EMAIL PROTECTED]>:
>
> >
> >  Normalmente, problemas como esse acontece quando se tem um programador
> ou
> >  analista desavidado, que acha que o Hibernate é o "rei da cocada
> preta"; que
> >  só basta criar as classes e os seus respectivos arquivos de mapeamente
> que
> >  está tudo tranqüilo.
>
>
> De fato.
>
>
>
> >  Existe muitas maneiras de otimizar o mapeamento das classes. Um estudo
> >  detalhado desta modelagem se faz necessário para obter um ganho de
> >  performance significativo. Tomar os devidos cuidados com relação à
> >  identidade de objetos é de suma importância para não vir a ter
> decepções no
> >  futuro; saber modelar a cardinalidade e a navegabilidade entre as
> >  associações de classes também é primordial.
>
>
> Existe uma maneira muito mais simples: faça-se a modelagem dos dados,
> e o Hibernate (ou o que mais se for usar) que se adapte a isso.
>
> Na minha experiência, 'profissionais Hibernate' dificilmente querem se
> moldar a um modelo de dados são.
>
>
>
> >  O problema que o autor deste artigo está enfrentando, eu também passei,
> >  usando Oracle, quando estava iniciando os trabalhos com Hibernate. A
> >  diferença é que pesquisei bastante antes de sair falando besteiras a
> >  respeito da framework.
>
>
> Que autor, que artigo?  Que besteiras?  Você está respondendo a uma
> dúvida de um colega, que não merece ser tratado desse jeito.
>
>
>
> >  Parto do princípio de que se dentre milhares de pessoas que utilizam
> >  Hibernate (ou NHibernate), apenas uma, duas ou até dez pessoas falam
> >  asneiras desta framework, o problema está no profissional e não na
> >  framework.
>
>
> Primeiro, o que é NHibernate?
>
> Segundo, leve em consideração que ferramentas não existem no vácuo,
> mas têm um caldo de cultura que as acompanham.  A cultura Hibernate é
> francamente hostil à modelagem de dados.
>
>
>
> >  Fico a imaginar como este autor se sairia tendo de usar um
> banco-de-dados
> >  como o Caché, DB4O, ou qualquer outro banco-de-dados orientado a
> objetos.
>
>
> Justiça seja feita, esses SGBDOOs saem-se relativamente bem com a
> estupidez normalmente gerada pelo Hibernate.
>
> Com o contraponto de que são praticamente inúteis para tudo o mais em
> comparação com um SGBD SQL, e que é quase impossível criar outros
> programas para usar a mesma base de dados.  Relatórios, então…
>
>
> --
> skype:leandro.gfc.dutra?chat              Yahoo!: ymsgr:sendIM?lgcdutra
> +55 (11) 3040 7300 r155                 gTalk: xmpp:[EMAIL PROTECTED]<[EMAIL 
> PROTECTED]>
> +55 (11) 9406 7191                ICQ/AIM: aim:GoIM?screenname=61287803
> +55 (11) 5685 2219    MSN: msnim:[EMAIL PROTECTED]
>
> _______________________________________________
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>



-- 
Atenciosamente,

Alexsander da Rosa
Linux User #113925
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Reply via email to