자바 마이그레이션


85

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

답변:


8

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

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


22
100 % 동기화되지 않습니다. 그것은 등을하지 ALTER 열 삭제 열 또는 테이블, 제거 FKS 않습니다
cherouvim

88

A의 기능 비교 사이

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

http://flywaydb.org를 보세요

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


2
이봐, 나는 Flyway를 몰랐어. 꽤 재미있어 보이며 자세히 살펴 보겠습니다. Flyway를 언급 해 주셔서 감사합니다!
Pascal Thivent

@Pascal Thivent 귀하의 의견에 감사드립니다! 당신이 그것을 평가한다면, 여기 또는 Flyway의 이슈 트래커에서 그것에 대한 당신의 의견 / 비판 / 제안을 듣게되어 기쁩니다. :-) 또한 DbMaintain을 비교 매트릭스에 추가 할 것입니다. 경쟁자 ...
Axel Fontaine

물론 그렇게 할거다. 그리고 비교에 DbMaintain을 추가 해주셔서 감사합니다. 이러한 행렬을 갖게되어 매우 좋습니다.
Pascal Thivent

3
게시 해 주셔서 감사합니다. 오늘 Flyway를 사용하기 시작했습니다. 나는 이전에 liquibase를 사용했으며 한 프로젝트에서 자체 솔루션을 롤링했습니다. Flyway는 내가 기대했던 liquibase입니다. 간단하고 xml이 없으며 Java로 더 복잡한 마이그레이션을 작성할 수 있습니다. 완전한. 개미 지원을 기대합니다.
nogridbag

1
웹 사이트의 현재 버전은 Flyway, Liquibase 및 MyBatis 만 비교하는 것으로 보입니다. 전체 비교는 여전히 다른 곳에서 사용할 수 있습니까?
Zero3 2016 년


10

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


6

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

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


6

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

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

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

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


5
2007 년 탄소 다섯의 C5-DB 마이그레이션 제품은 2010 년 이후 업데이트되지 않았기 때문에 Hashrocket 감동되지 않은
녹색

4

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


2

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


1
같은 도구는 빠르고 안전하게 개발하는 데 도움이 될 것입니다
아서 로널드

@Arthur 예, 우리가 그런 도구를 가지고 있다는 것은 아주 좋은 일입니다. 한 환경에서 다른 환경으로의 연속적인 스키마 업데이트는 이제 우리에게 즐거움입니다. :)
Pascal Thivent
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.