[java] 자바 마이그레이션

레일과 자바에서 루비를 모두 사용합니다. Rails 프로젝트에서 작업 할 때 마이그레이션을 사용하는 것을 정말 좋아합니다. 그래서 Java 용 도구와 같은 마이그레이션이 있는지 궁금합니다. 그러한 도구가없는 경우 마이그레이션을 Java 프로젝트에서 사용하는 데이터베이스를 제어하는 ​​도구로 사용하는 것이 좋은 생각입니까?



답변

Hibernate의 SchemaUpdate를 사용하여 마이그레이션과 동일한 기능을 수행했습니다. 앱을 시작할 때마다 데이터베이스 구조를 검사하고 매핑과 동기화하므로 추가 rake : db : migrate 단계가없고 앱이 실행중인 데이터베이스와 동기화되지 않을 수 있기 때문에 실제로 마이그레이션보다 쉽습니다. 에 맞서. Hibernate 매핑 파일은 Rails 마이그레이션보다 복잡하지 않으므로 앱에서 Hibernate를 사용하지 않았더라도이를 활용할 수 있습니다. 단점은 롤백, 마이그레이션, DML 문 실행만큼 유연하지 않다는 것입니다. 주석에서 지적했듯이 테이블이나 열도 삭제하지 않습니다. Hibernate 초기화 프로세스의 일부로 수동으로 수행하는 별도의 메서드를 실행합니다.

Rails 마이그레이션을 사용할 수없는 이유는 모르겠습니다. 스택 (Ruby, Rake, Rails)을 설치하는 데 신경 쓰지 않는 한 앱을 만질 필요가 없습니다.


답변

A의 기능 비교 사이

  • 플라이 웨이
  • Liquibase
  • c5-db-migration
  • dbdeploy
  • Mybatis
  • MIGRATEdb
  • migrate4j
  • dbmaintain
  • AutoPatch

http://flywaydb.org를 보세요

이것은 귀하와 다른 사람 이 작업에 적합한 도구선택할 수있는 좋은 출발점이 될 것입니다.


답변

Liquibase 는이 도메인의 또 다른 프로젝트입니다.


답변

Grails 에는 Rails에서 패턴 화 된 dbmigrate 유틸리티가 있습니다. Groovy에서 구현되었으므로 모든 Java 프로젝트에서 사용할 수 있어야합니다.


답변

나는 같은 질문을 조사하면서이 게시물을 보았습니다. 아직 최고의 도구 나 접근 방식에 대한 결론에 도달하지 않았지만 지금까지 다른 답변에서 언급되지 않은 도구 중 하나는 dbdeploy입니다. 입니다. 이 도구의 비교 내용을 읽고 싶습니다.

기타 관련 리소스 : Martin Fowler 및 Pramod Sadalage의 Evolutionary Database Design 에 대한 다소 오래된 게시물 , Refactoring Databases : Evolutionary Database Design by Sadalage 및 Scot Ambler.


답변

Java 용 레일과 유사한 마이그레이션의 두 가지 독립적 인 구현도 있습니다.

1) Carbon Five 에서 Maven 기반 마이그레이션

2) Hashrocket의 Ant 기반 작업 (개인적으로 가장 좋아하는 작업)

이 패키지는 Maven과 Ant를 위해 특별히 작성되었지만 일부 작업을 통해 거의 모든 것에 적용 할 수 있습니다.


답변

Migrate4j 는 후보처럼 보이지만 프로젝트는 프로덕션 용도로 충분히 성숙해 보이지 않습니다.