Migration com java

Pessoal,
Qual ferramenta de Migrations (ActiveRecord) vcs usam p/ Java?

Opa.

Estou usando o Liquibase http://www.liquibase.org/ . Achei muito bom. Você cria as changesets, ativa ele através de um Servlet, Spring Bean ou linha de comando.

Muito bom e bem flexível.

Tem como usar o Liquibase sem xml? Com código java mesmo?

Não usei sem o XML. Creio que seja possível fazer a utilização do mesmo usando 100% Java.

Olhei a API dele e é bem organizada, no final … os XMLs vão virar objetos Java, portanto, creio que com algum estudo, você consiga eliminar os XMLs.

At.,

Recentemente li sobre uma solução chamada FlyWay.

O site tem uma comparação com algumas outras soluções no mesmo estilo.
http://code.google.com/p/flyway/

Abraços.

se for só migração ddl, é só usar o hibernate com hbm2ddl.auto setado pra update.

se for migração de dados daí vc precisa de algo mais apurado.

[quote=Lucas Cavalcanti]se for só migração ddl, é só usar o hibernate com hbm2ddl.auto setado pra update.

se for migração de dados daí vc precisa de algo mais apurado.[/quote]

A migração de ddl com hbm2ddl.auto não é eficaz para todos os casos. Por exemplo, se uma coluna tem o length de 10 e você muda o length para 20. A alteração não será feita no banco de dados. Também, já tive problemas ao não criar índices para algumas tabelas.
Fui atrás para verificar o porquê disso, e achei uma discussão no stackoverflow onde são apresentadas outras situações que o hbm2ddl.auto não resolve. (não lembro o link, também não achei).

Enfim, para criar-se um banco do zero. Funcionaria bem, mas para atualizações constante de ddl não resolve.

mas alterações pequenas de ddl não precisam de um framework de migrations. Afinal o hibernate sempre gera a última versão do banco corretamente.

vc precisa só do SQL que gera as mudanças, e só precisa executá-lo uma vez.

da vez que eu usei migrations, eu usei o Migrations do Rails em modo standalone, para um projeto java. Funcionou bem.

Estou trabalhando em um projeto de migrations java em um estilo bem parecido com o do RoR, mas como estou com pouco tempo, creio que vá demorar.

Mas vejo que o Liquibase resolve uma boa parte dos problemas em relação ao gerenciamento do schema do banco e também em relação à atualização dos dados.

Falow.

[quote=Lucas Cavalcanti]mas alterações pequenas de ddl não precisam de um framework de migrations. Afinal o hibernate sempre gera a última versão do banco corretamente.

vc precisa só do SQL que gera as mudanças, e só precisa executá-lo uma vez.

da vez que eu usei migrations, eu usei o Migrations do Rails em modo standalone, para um projeto java. Funcionou bem.
[/quote]

Sim, só o SQL basta (é o que tenho feito hoje).
O problema é quando se tem mais bancos de dados. (para clientes diferentes).

Legal a idéia de usar o Migration do Rails. Irei pesquisar sobre o assunto.

Eu uso o mybatis-migrations (desde quando chamava-se ibatis).
Ele é bem simples, voce escreve suas migrações com o sql nativo do banco no qual vai usar.
Isso pode resolver muita coisa, mas para mais de um banco, já da um trabalho extra.

O mybatis tambem tem uns problemas para processar os delimitadores para bancos diferentes, por exemplo, o GO para MSSql e o ponto-virgula para oracle, as vezes tenho que explicitá-los na migration, mesmo ele configurado corretamente.

Agora que vi o flyway, vou testá-lo. Pelo que vi, esse flyway começou bem, a matriz comparativa realmente dá uma boa idéia do que ele faz.
Vamos ver.