Hibernate em produção?

5 respostas
rodpuc

Uso o hibernate pra criar minhas tablelas durante o desenvolvimento, mas sempre que eu faço alterações significativas em minahs entidades tenho que recriar o BD senão acontecem coisas bizarras tipo:

EntityA tinha relação com EntityB, o tipo de EntityB muda pra EntityB2
dá pau

EntityC tinha dois campos: nome e data, mas o data é renomeado pra dataCriacao
a tabela fica com duas colunas (data e dataCriacao). As entradas antigas vão ficar com dataCriacao null e as novas vão ficar com data null

Quando meu sistema for pra produção eu (obviamente) não vou poder ficar recriando o BD, então eu pergunto: comofaz? :?

5 Respostas

romarcio

Confere se nos teus mapeamentos, os nome dos campos não estão diferentes do nome das colunas no banco.

rodpuc

Eu uso anotações.

R

O problema é que o hibernate marcado como update não funciona 100%.

não altera colunas, não deleta colunas ou tabelas, não altera FK’s, …

Tem alguns projetos em Java que simulam o db:migrate do Rails. Dê uma olhada em alguns projetos e veja se algum se adapta a voce.

P.S: Eu gostei mais do migrate4j mas ainda não testei.

fantacone

Olá Amigos…

Veja… se há alteração nas entidades é mais do que correto o hibernate alterar o seu banco…

Se o resultado final está ficando diferente do esperado é pq talvez alguma coisinha esteja errada…

Em produção o correto é que você utilize uma opção do hibernate para apenas validar o banco… Isso serve para que caso exista uma tabela que por descuido um desenvolvedor alterou em resultado de um erro em uma Entity, a aplicação não perca dados…

a opção é:

persistence.xml

<property name="hibernate.hbm2ddl.auto" value="validate" />

Ah… se algo no banco estiver diferente das entidades, o hibernate lança uma exceção…

Acho que é isso… pessoal se eu estiver errado, por favor me corrijam…

Abraços…

rodpuc

Subindo com validate ele nunca vai alterar ou criar entidades novas, então não é uma opção.

Criado 14 de janeiro de 2011
Ultima resposta 14 de jan. de 2011
Respostas 5
Participantes 4