André e demais colegas da lista:

  Acho que o que todos nós queremos é uma ferramenta mais produtiva, correto?
  Estou trabalhando como DBA em uma empresa que tem um sistema em Java com 
cerca de 2200 tabelas, e umas 10.000 telas. Começaram este sistema há muito 
tempo e, na época, inventaram um framework próprio. Claro, com os conhecimentos 
que os mesmos tinham na época; portanto, o mesmo se encontra ultrapassado e de 
difícil manutenção. 
  Aí os "gerentes" resolveram chamar uns supostos "consultores", que, entre 
vários absurdos, indicaram o uso do banco de dados Caché, além de trocar o Java 
pelo .NET - argumentando que a velocidade do Caché é superior ao PostgreSQL, e 
a "produtividade" do .NET é "comprovadamente" superior ao Java. Também me 
disseram que - pasmem - o código do .NET roda no Linux, argumentando que - 
palavras deles - "a Microsoft não vive sem o Linux"...
  Sim; creio que muitos da lista devem estar, neste momento, se contorcendo com 
as gargalhadas...
  Bom, agora estou tentando explicar aos "gerentes" que já temos uma equipe 
qualificada em Java, que a linguagem e as ferramentas são gratuitas, que o 
Linux é gratuito, que 90% dos clientes da empresa NÃO vão trocar o sistema 
atual se o mesmo gerar mais custos (SO Windows Server + licenças do tal Caché); 
que teremos que adquirir a licença do .NET (R$ 3.500,00, segundo os 
"consultores"), etc e tal.
  Aí então começamos à falar da persistência, e um dos "gerentes", que não sabe 
o que é o Project e nunca escreveu um loop na vida, argumentou que "o Hybernate 
não aceita chaves compostas"...
  Ufa; estou resumindo uma discussão de algumas horas. No final, tive de abrír 
o Google e pedí para ele me demonstrar qualquer documentação que favorecesse 
seus argumentos.
  Passada esta fase, tivemos uma outra reunião, onde os programadores mais 
antigos da empresa estavam presentes e, junto com todos, optaram por continuar 
com o Java, mas utilzando o JPA, mas só nas novas alterações. O código antigo 
deve coexistir com o novo, sempre que possível. Se não, reescrever com uma 
tecnologia mais produtiva.

  E a pergunta que eu faço para os que já trabalham com o JPA é:

a - funciona realmente?
b - quais são as vantagens e desvantagens?
c - tem algum problema de performance?
d - utiliza chaves compostas sem problemas?


No aguardo,

Márcio de Figueiredo Moura e Castro


PS: não sei se deveria abrir um novo tópico, mas neste caso, me desculpem,







________________________________
De: Andre Fernandes <[email protected]>
Para: Comunidade PostgreSQL Brasileira <[email protected]>
Enviadas: Sábado, 2 de Janeiro de 2010 19:12:08
Assunto: Re: [pgbr-geral] Res: Uso de Campos Padrões


2010/1/2 Tarcísio Sassara <[email protected]>

>2010/1/2 Leonardo Cezar <[email protected]>:
>
>> 2010/1/1 Tarcísio Sassara <[email protected]>:
>>>> Ainda não conheço uma biblioteca/framework ORM que faz uso adequado de
>>>> chaves naturais compostas.
>>>
>>> php: doctrine, propel;
>>> python: SQLAlchemy;
>>> ruby: DataMapper;
>>> java: qualquer framework baseado na porcaria do JPA, por exemplo hibernate;
>>>
>>> Abraço!
>>>
>
>Opá,
>>Da lista conheço o SQLAlchemy, o Propel e o Doctrine.
>
>>Acho que o Doctrine superou o Propel.
>>E no site do Doctrine diz: "Avoid composite keys"
>
>http://www.doctrine-project.org/documentation/manual/2_0/en/best-practices#avoid-composite-keys
>
>>Se da o suporte mas não recomenda o uso, não é legal.
>
>>O ORM provido pelo Django também não faz direito (faz tempo que não
>>dou uma olhada).
>
>
>>Para novas aplicações criadas isso não é muito problemático. É só
>>seguir as convenções, mas quando é preciso migrar deve dar uma dor de
>>cabeça.
>
>
>

Boa tarde,

Honestamente, o uso de ORMs é um assunto deveras polêmico.  

Eu, pessoalmente, sou contra. Não considero boa prática ter a estrutura do
banco na aplicação, não vejo razão de transportar a mesma para a
aplicação, ela não precisa saber quais são as tabelas que se usa no
banco. A modelagem do banco de dados pertence ao banco de dados. 
E também já vi muitos problemas de desempenho e más implementações
quanto a muitos aspectos referentes ao banco em diversos ORMs de
mercado. Incluindo Doctrine, Propel, Hibernate, entre outros. Mas isso
é minha visão pessoal.

Por outro lado, tenho amigos que são excelentes desenvolvedores (eu sou
analista de dados, mesmo sabendo programar não tenho visão de programador) que 
adoram o uso de ORMs. Muitos deles gostam de doctrine
para PHP e Hibernate para Java. Mesmo ao apontar os problemas que
encontrei nessas ferramentas, eles consideram que esses ORMs são ótimas
alternativas e ajudam muito. Mesmo
discordando tenho de aceitar a opnião deles pois assim é o mundo do 
desenvolvimento de software: há
diversas frentes, e quase nunca apenas uma está correta. 

Eu, pessoalmente, considero melhor prática usar visões e procedures para
acessar dados do banco ou mesmo alterá-los, com poucas excessões. O
programa não precisa saber o que está em cada tabela, precisa apenas
solicitar que, por exemplo, insira um novo cliente e mandar os dados
dele. E depois precisa ler os dados do mesmo, não se preocupando se tem
1, 2, 3, ou mais tabelas que compooem essa informação. 
Essa é a minha visão, é como faria. Mas se entrarmos em discussão
quanto a isso a coisa vai longe, é um assunto muito polêmico.

Abraços,
André.

PS: o hibernate não é baseado no JPA, pelo que me recordo é o contrário.


 
>--
>>Tarcisio F. Sassara
>
>_______________________________________________
>>pgbr-geral mailing list
>[email protected]
>https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>


-- 
André de Camargo Fernandes


      
____________________________________________________________________________________
Veja quais são os assuntos do momento no Yahoo! +Buscados
http://br.maisbuscados.yahoo.com
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a