Atualização de Banco de Dados
05/11/2012 17:35
Pessoal,
Tenho uma dúvida que me persegue há tempo no Grails.
Tenho um domínio:
class A{
String nome
...
static constraints = {
nome nullable: false, blank: false
...
}
}
Quando mandamos o Grails rodar o hibernate cria regras de campo obrigatório para o 'nome'.
Porém com as manutenções e remodelagens do sistema caso exista a necessidade de efetuar uma alteração e colocar o campo que se chamava 'nome' renomeando para 'nomeFuncionario' ou alterar a constraint de nullable:false para nullable:true. Fazendo qualquer uma destas alterações, ao tentar inserirmos dados na tabela ocorre erro de inserção uma vez que o antigo campo 'nome' está presente ou suas regras de obrigatoriedade.
O hibernate não efetua a exclusão das antigas regras o que obriga o desenvolvedor a ir diretamente no BD e excluir a tabela uma vez que excluindo apenas a coluna o problema persiste e ao excluir a tabela e reiniciar a aplicação o banco é modelado nas configurações desejadas.
o problema ocorre quando a aplicação encontra-se em produção e o desenvolvedor tem que migrar uma tabela de dados a cada alteração no domínio.
Minha dúvida é, alguém que passa ou já passou por isso conhece algum meio melhor de persistir os dados quando ocorre este tipo de alteração em Domínios sem excluir a tabela Diretamente no banco de Dados?
Tags:
hibernate, banco de dados