Eu usei o SchemaUpdate do Hibernate para executar a mesma função que as migrações. Na verdade, é mais fácil do que as migrações porque toda vez que você inicia seu aplicativo, ele examina a estrutura do banco de dados e a sincroniza com seus mapeamentos para que não haja rake: db: migrate passo extra e seu aplicativo nunca pode ficar fora de sincronia com o banco de dados que está executando contra. Os arquivos de mapeamento do Hibernate não são mais complexos do que as migrações do Rails, então mesmo que você não use o Hibernate no aplicativo, você pode tirar vantagem disso. A desvantagem é que não é tão flexível quanto reverter, migrar para baixo e executar instruções DML. Conforme apontado nos comentários, ele também não descarta tabelas ou colunas. Eu executo um método separado para fazer isso manualmente como parte do processo de inicialização do Hibernate.
Eu não vejo porque você não pode usar migrações Rails - contanto que você não se importe em instalar a pilha (Ruby, Rake, Rails), você não terá que mexer no seu aplicativo.
Para uma comparação de recursos entre
dê uma olhada em http://flywaydb.org
Este deve ser um bom começo para você e qualquer outra pessoa selecionar a ferramenta certa para o trabalho
fonte
Liquibase é outro projeto neste domínio que vale a pena conferir.
fonte
Grails tem um utilitário dbmigrate que segue o padrão do Rails. Como é implementado no Groovy, você deve ser capaz de usá-lo a partir de qualquer um de seus projetos Java.
fonte
Eu encontrei este post enquanto pesquisava a mesma questão. Ainda não cheguei a nenhuma conclusão sobre a melhor ferramenta ou abordagem, mas uma ferramenta que descobri que não foi mencionada em outras respostas até agora é o dbdeploy . Eu estaria interessado em ler quaisquer comparações dessas ferramentas.
Alguns outros recursos relevantes: a postagem um tanto antiga de Martin Fowler e Pramod Sadalage sobre Evolutionary Database Design , e o livro Refactoring Databases: Evolutionary Database Design de Sadalage e Scot Ambler.
fonte
Existem também duas implementações independentes de migrações semelhantes a rails para Java:
1) Migrações baseadas em Maven do Carbon Five
2) Tarefas baseadas em Ant do Hashrocket (meu favorito)
Embora esses pacotes tenham sido escritos especificamente para Maven e Ant, com algum trabalho você pode adaptá-los para quase tudo.
fonte
Migrate4j parece um candidato, mas o projeto não parece maduro o suficiente para uso em produção.
fonte
Há também o DbMaintain, que foi inicialmente desenvolvido dentro da Unitils, mas agora é um projeto dedicado. No momento, estamos usando e estamos muito satisfeitos (o que não significa que não haja boas alternativas). Eu listo mais deles em meu banco de dados + favoritos de migração (com foco em ferramentas de suporte Maven).
fonte