Galera… to apanhando feito gato no saco pra fazer um projeto aqui no serviço… O esquema é sincronizar informações (vendas, cadastros, etc…) entre duas databases (matriz <-> filiais), a lógica da aplicação eu tenho, como deve funcionar eu sei…
O problema é que a estrutura toda já existe, o sistema todo funciona e tal (não tem 1 linha do sistema escrita em Java) e pra fazer esse projeto tinha de ser em Java.
To adicionando umas FK (que fazem falta), fiz meu HibernateUtil pra conexão em múltiplas databases, to tentando deixar a parte de sincronização mais automática possível (já salvar todos os relacionamentos, tipo, salvou um produto, salvar os estoques, codigos de barra… etc) só que como disse to apanhando mto pra utilizar Hibernate, tem os famosos LazyInitializationException, alguns outros erros que apareceram quando corrigi o Lazy… resumindo tá um inferno! (culpa minha eu sei!)
A dúvida é, deveria usar o Hibernate, com tantas informações assim, pra um projeto que já está estruturado, ou há alguma forma melhor, que não estou conseguindo enxergar? Qualquer dica, até um xingamento (se for construtivo) é bem vindo, to passando uns perrengue aqui hehe.
Mapeamento sei que não é… Como tenho todas as tabelas criadas e estou fazendo algumas modificações, estou usando o assistente do hibernate p/ gerar o mapeamento (Hibernate Tools no Netbeans). To buscando um jeito de padronizar o máximo possível, mas tá foda, o DAO tá meio complicado…
ORMs como hibernate só fica mais tranquilo e até pode se dizer 100% indicado SE a base de dados for construída do ZERO, a partir do mapeamento. Caso contrario, ou seja, mapear base de dados legada é certeza de frustração em quase 100% dos casos.
Outro detalhe é que ao ler a respeito dos ORMs tem se a impressão que a coisa vai ser maravilhosa; mas quando chega na pratica o bicho pega faminto não dá outra. Faça uma pesquisa e descobrirá algumas causas disto. Se bobear perde-se mais tempo do que se não utilizasse tal solução.
A curva de aprendizado é grande, ao contrario do que muitos pensam, mesmo os mais experientes sofrem com estes frameworks. Sou a favor do uso e os pontos positivos são inquestionáveis; mas acredito que não se encaixa em todos os casos.
Resumindo, o problema pode não ser totalmente seu e sim da escolha da ferramenta; ou simplesmente esta sendo um pouco mais difícil do que você pensava dai a sua bronca.
Bom… deu certo aqui algumas coisas, tava xingando o Hibernate a toa hehe!
Minha implementação do DAO precisa de algumas [color=white]várias[/color] melhorias.
Mexer com sistema legado é uma m… mesmo, alguns campos não seguem padrão de nomenclatura e eu faria várias coisas de forma diferente…
Mas é isso aí, valeu aí, e vou usar Hibernate mesmo… O objetivo é padronizar de tal forma que quando alguma entidade precisar ser sincronizada também (inclusive suas dependências), com pouco ou quase nenhum esforço será possível a alteração…
A primeira coisa que eu faria diferente seria não usar o assistente do maldito netbeans e implementar isso manualmente. Por que? Para que eu tenha controle absoluto de tudo o que estou mapeando. Além disso, faria todo mapeamento em XML, pois, com annotations isso iria me trazer muito problema. Talvez consideraria algo programático.
A segunda coisa seria tratar cada caso de forma isolada, pois, se você divide os problemas em partes menores, a coisa tende a fluir.
A terceira coisa é não achar que framework ORM faz milagre. Se não o conhece e se sente mais confortável com JDBC, não tenha vergonha de usar.
A quarta coisa seria tentar expor a questão de padronização. Ir refatorando o sistema até chegar ao ponto de estar bem coeso e adequado.
E xingamentos só irão aparecer se você demonstrar má vontade ou preguiça.
saoj: Valeu pelo link, já fiz uma leitura rápida aqui… Muito bom, salvei aqui, quando chegar em casa leio com mais calma. Apesar de gostar (bastante) do Hibernate, ou da proposta de qualquer outro ORM é sempre bom ter outras opiniões!
drsmachado: Os mapeamentos eu utilizo com XML mesmo, e normalmente dou uma revisada e faço algumas alterações/adições no XML pois normalmente preciso mudar algo. Como no link do saoj /, vou tentar algo programático… Sei que ORM não faz milagre, o uso de qualquer framework soluciona alguns problemas e traz alguns outros, isso é inevitável mas algumas vezes prefiro assim. E o principal problema é refatorar o sistema… Isso está fora de qualquer hipótese hehe (não depende de mim), to dando meus pulos aqui pra não fazer gambiarra e tentar deixar da melhor forma possível. Mas de qualquer forma valeu a discussão!