Aprendi que devemos Modelar corretamente nosso BD (usando o MER) e devemos também Normalizar nosso BD, e ambos os procedimentos servem para melhor armazenar e recuperar dados; e pelo pouco que sei, o Hibernate faz o mapeamento ORM - exatamente de objetos para tabelas - o que em si é algo muito bom.
Minhas dúvidas começam justamente aí… se devemos Modelar/Normalizar o BD corretamente, a primeira pergunta seria: “então, pra quê usar o Hibernate”? Não seria melhor escrever um bom código Java para acessar um bom BD, bem Modelado/Normilizado, “diretamente”?
No caso do MER, o certo seria Modelar e Normalizar corretamente antes de criar o BD em si, mas a gente sabe que isso nem sempre é possível e que, diante de possíveis “alterações” na estrutura dos dados, sei lá, devido a mudanças nas “regras de negócio”, teríamos de remodelar tudo de novo… Num caso como este, como proceder: se já existe um BD “em produção”, Modelado e Normalizado “corretamente”, com “dados reais”, mas existem “alterações estruturais” a serem feitas? O que fazer para “garantir as alterações estruturais sem perder os dados já ‘imputados’”?
No caso do Hibernate, a impressão que tenho é que o mapeamento ORM “livra” o programador de ter de Modelar e Normalizar, é isso mesmo? Ou é preciso conhecer modelagem ER e Normalização de BD para “criticar” (e/ou “editar”) o mapeamento gerado pelo Hibernate? Usando o Hibernate, possíveis alterações na estrutura dos dados são mais “fáceis” de serem implementadas? E como ficam os dados “já imputados”?