Pessoal, estou com uma duvida no meu projeto que estou começando, decidimos ultilizar jpa/hibernate.
ai vem a duvida, vamos tambem fazer aquele projeto do banco de dados, o modelo relacional.
O codigo em java sera de acordo com o diagrama de classes.
Ai vem minha duvida, o banco de dados é melhor ser gerado por onde? deixa o jpa resolver?
ou eu gero o sql de acordo com o projeto do modelo relacional?
Depende do tipo de funcionalidade que estiver resolvendo. Quando for uma consulta ou relatório complexo pode criar o SQL por sua conta, não precisa ver modelagem OO como bala de prata em momentos que não for confortável usar, pois pode só atrapalhar e criar um esforço por purismo. Quando for situações mais diretas é mais adequado query a partir de objetos. Isso você vai sentir experimentando. No Hibernate (sem JPA) uso muito Criteria e SQL nativo através de named querys.
Aqui rolou hoje mesmo algo que pode complementar, em relação a modelagem: http://www.guj.com.br/java/305245-a-independencia-entre-o-diagrama-entidade-relacionamento-e-o-diagrama-de-classes
E se você pesquisar no GUJ tem mais tópicos sobre o assunto hibernate x SQL/banco.
Um que achei agora: http://www.guj.com.br/java/304467-perca-de-desempenho-com-hibernate
é pq minha duvida nao é exatamente entre o sql, e o jpa.
e sim no diagrama la do BD se eu poderia gerar logo tudo por ele…
meu projeto é de medio porte, é um sistema web de controle de estoque vamos começar com mysql, mas no futuro migrar para postgree.
quando for migrar pra o postgree, o hibernate vai ser mao na roda.
o que voces me recomendam?
[quote=adam_sandler]é pq minha duvida nao é exatamente entre o sql, e o jpa.
e sim no diagrama la do BD se eu poderia gerar logo tudo por ele…
meu projeto é de medio porte, é um sistema web de controle de estoque vamos começar com mysql, mas no futuro migrar para postgree.
quando for migrar pra o postgree, o hibernate vai ser mao na roda.
o que voces me recomendam?[/quote]
Por que nao pode ir direto para Postgres? (Que realmente é melhor dos frees).
Entao ja existe o modelo de dados? Voce falou que ia fazer. O primeiro link que passei fala sobre esse assunto de modelagem, voce pode fazer o modelo de classes da melhor forma para o Negocio e mapeia com o banco existente ou gera o banco respeitando o modelo se não existir ainda. Em situacoes isoladas voce faz o modelo de classes primeiro e depois gera automaticamente as tabelas, nao precisando de modelagem de dados, só sendo necessario em cenarios complexos como o que falei no primeiro link.
Ah então eu posso gerar o banco pelo modelo relacional normalmente, e mapear respeitando as regras com o BD ja criado ?
eu achava q tinha problema nisso, a duvida era essa…
Sobre o postgreeSql, e o mysql, vamos ultilizar o mysql por regras academica, mas depois vamos continuar o projeto por fora pra vender, então queria usar postgreeSql.
tem algum problema nessa migração? (lembrando que quando eu for migrar , não irei gerar nada por modelo nenhum não, vou deixar o jpa tomar conta)
[quote=adam_sandler]Ah então eu posso gerar o banco pelo modelo relacional normalmente, e mapear respeitando as regras com o BD ja criado ?
eu achava q tinha problema nisso, a duvida era essa…
Sobre o postgreeSql, e o mysql, vamos ultilizar o mysql por regras academica, mas depois vamos continuar o projeto por fora pra vender, então queria usar postgreeSql.
tem algum problema nessa migração? (lembrando que quando eu for migrar , não irei gerar nada por modelo nenhum não, vou deixar o jpa tomar conta)[/quote]
Academicamente o correto é gerar o banco a partir do modelo de classes. Mas se o banco já existe em produção no cliente ou o “o professor tenha imposto um modelo de dados”, então pode mapear o existente sim, exceto casos que seja melhor realizar uma migração pelo modelo de dados não ser adequado.
Sobre mudar de banco depois, então segure a onda por enquanto para não criar SQLs próprios, onde pode ter particularidades do banco.
blz vlw, entendido