레일과 자바에서 루비를 모두 사용합니다. Rails 프로젝트에서 작업 할 때 마이그레이션을 사용하는 것을 정말 좋아합니다. 그래서 Java 용 도구와 같은 마이그레이션이 있는지 궁금합니다. 그러한 도구가없는 경우 마이그레이션을 Java 프로젝트에서 사용하는 데이터베이스를 제어하는 도구로 사용하는 것이 좋은 생각입니까?
답변:
Hibernate의 SchemaUpdate를 사용하여 마이그레이션과 동일한 기능을 수행했습니다. 앱을 시작할 때마다 데이터베이스 구조를 검사하고 매핑과 동기화하므로 추가 rake : db : migrate 단계가없고 앱이 실행중인 데이터베이스와 동기화되지 않을 수 있기 때문에 실제로 마이그레이션보다 쉽습니다. 에 맞서. Hibernate 매핑 파일은 Rails 마이그레이션보다 복잡하지 않으므로 앱에서 Hibernate를 사용하지 않았더라도이를 활용할 수 있습니다. 단점은 롤백, 마이그레이션, DML 문 실행만큼 유연하지 않다는 것입니다. 주석에서 지적했듯이 테이블이나 열도 삭제하지 않습니다. Hibernate 초기화 프로세스의 일부로 수동으로 수행하는 별도의 메서드를 실행합니다.
Rails 마이그레이션을 사용할 수없는 이유는 모르겠습니다. 스택 (Ruby, Rake, Rails)을 설치하는 데 신경 쓰지 않는 한 앱을 만질 필요가 없습니다.
A의 기능 비교 사이
이것은 귀하와 다른 사람 이 작업에 적합한 도구 를 선택할 수있는 좋은 출발점이 될 것입니다.
나는 같은 질문을 조사하면서이 게시물을 보았습니다. 아직 최고의 도구 나 접근 방식에 대한 결론에 도달하지 않았지만 지금까지 다른 답변에서 언급되지 않은 도구 중 하나는 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를 위해 특별히 작성되었지만 일부 작업을 통해 거의 모든 것에 적용 할 수 있습니다.
또한이 DbMaintain 처음에 내부 개발 된 Unitils 하지만 지금은 전용 프로젝트는. 우리는 현재 그것을 사용하고 있으며 매우 만족합니다 (좋은 대안이 없다는 것을 의미하지는 않습니다). 내 데이터베이스 + 마이그레이션 북마크 에 더 많은 것을 나열합니다 (Maven을 지원하는 도구에 중점을두고 있음).