2014-06-15 4 views
2

Spring/Hibernate/MySql 애플리케이션을 개발 중입니다. 응용 프로그램이 아직 생산되지 않았고 현재 Hibernate의 hbm2ddl 기능을 사용합니다.이 기능은 도메인의 변경 관리에 매우 편리합니다. 또한 이동 경로을 데이터베이스 마이그레이션에 사용하려고합니다. 스키마 생성에 사용하는 가장 좋은 방법은 무엇Hibernate의 hbm2ddl과 함께 Flyway를 사용하여 애플리케이션의 라이프 사이클 동안 데이터베이스 스키마 관리하기

  • (처음 :

    미래의 어떤 시점에서

    , 응용 프로그램이 질문의 첫 세트에 이르게 처음으로 생산에 넣어지게된다 앱이 프로덕션으로 출시됩니다.) 특히, Hibernate의 hbm2ddl이 프로덕션 데이터베이스에서 스키마를 만들도록하거나 Flyway가 SQL 스크립트를 사용하여 첫 번째 스키마를 만들도록해야합니까? 두 번째 옵션 (즉, 이동 경로)이 바람직하다면 hbm2ddl에서 생성 한 데이터베이스에서 SQL 스크립트를 생성해야합니까?

하자 나는 내 응용 프로그램의 첫 번째 버전은 생산에서 실행하고 난 최대 절전 모드의 hbm2ddl을 사용하여 응용 프로그램의 두 번째 버전 개발을 재개하려는 가정합니다.

  • 도메인 변경 사항을 관리하고 특히 버전 2의 프로덕션으로 릴리스하는 동안 데이터베이스를 마이그레이션하기위한 데이터베이스 스키마의 버전 1과 버전 2 간의 차이점을 계산하려면 어떻게해야합니까?

답변

1

최상의 트레이드 오프는 통합 테스트에만 hbm2ddl을 사용하고 QA 테스트 또는 프로덕션 환경에서는 런타임에 플라이웨이를 사용하는 것입니다.

Flyway에서도 첫 번째 스크립트의 기본 스크립트로 hbmddl을 사용할 수 있지만 JPA 모델을 변경할 때마다 수동으로 새 업데이트 스크립트를 만들어야합니다.이 스크립트는 그리 어렵지 않습니다. 이렇게하면 DB 관련 기능도 사용할 수 있습니다.

통합 테스트와 런타임은 서로 다른 전략을 사용하기 때문에 hbmddl과 Flyway에서 만든 스키마를 비교하는 시스템 통합 테스트를 작성해야합니다. 다시 말하지만 이것은 어렵지 않습니다. 실제 생산 DB (메모리 통합 테스트가 아닌)와 비교해보십시오.