developer tip

자바 마이그레이션

optionbox 2020. 9. 19. 10:54
반응형

자바 마이그레이션


레일과 자바에서 루비를 모두 사용합니다. 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 and Scot Ambler.


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

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

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

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


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


또한이 DbMaintain 처음에 내부 개발 된 Unitils 하지만 지금은 전용 프로젝트는. 우리는 현재 그것을 사용하고 있으며 매우 만족합니다 (좋은 대안이 없다는 것을 의미하지는 않습니다). 데이터베이스 + 마이그레이션 북마크 에 더 많은 것을 나열합니다 (Maven을 지원하는 도구에 중점을 둡니다).

참고 URL : https://stackoverflow.com/questions/131020/migrations-for-java

반응형