2012-04-15 5 views
4

SQL Server Express를 백엔드 데이터베이스로 사용하는 Java EE 응용 프로그램이 있습니다. 새로운 버전을 배포 할 때 테이블 추가, 열 추가, 열 제거, 테이블 병합, 열 병합 등의 데이터베이스 변경이 필요합니다.Java EE 응용 프로그램의 업데이트시 데이터베이스 스키마 마이그레이션

오늘까지는 데이터베이스를 수정하기 위해 오프라인 SQL 스크립트를 사용했지만이 솔루션은 확장 성이없고 오류가 제거되지 않습니다.

@PostConstruct 데코 레이팅 된 메소드가있는 싱글 톤 스타트 빈을 사용하여 배포하는 동안 시스템에서 사용하는 데이터를 추가 및 제거합니다.

이제 DML 문을 실행하여 배포 중에 데이터베이스를 업그레이드하고 SQL 스크립트를 제거 할 수 있습니다.

  1. 누구나 시도해 보았습니까?
  2. entityManager.unwrap 메서드를 사용하거나 간단히 JDBC DataSource 리소스를 싱글 톤 스타트 빈에 삽입해야합니까?
+0

일부 스키마 이주 도구에 대한 간단한 비교를 확인할 수 있습니다. http://stackoverflow.com/a/28055590/2658613 – gaboroncancio

답변

6

최근에 을 사용하기 시작했으며 매우 만족합니다. documentation is very good. 즉, 버전이있는 SQL 스크립트 집합을 포함합니다. 이동 경로 엔진은 아직 적용되지 않은 SQL 스크립트 (특수한 메타 데이터 테이블이 생성 됨)를 선택하여 실행합니다. SQL을 버전 또는 일반 Java와 함께 사용할 수 있습니다.

+0

감사합니다. 조사해 보겠습니다. 좋은 하루 되세요. –

5

토마스의 대답 외에도 LiquiBase을 사용할 수도 있습니다. 이 솔루션은 개발자가 스키마 변경을 "버전 제어"하여 개발자가 완전히 이해할 수있는 스키마 변경 내역을 얻을 수 있도록합니다. 그런 다음 LiquiBase를 사용하여 변경 로그 또는 그 하위 세트를 프로덕션 DB에 적용 할 수 있습니다. 변경 로그의 하위 집합을 롤백 할 수도 있습니다.

많은 종류의 변경 사항을 즉시 처리 할 수 ​​있으며 사용자 지정 마이그레이션 Java 클래스를 사용할 수도 있습니다.

그것을 자신을 사용하지 마십시오하지만 2007 년

여기 빠른 overview이기 때문에 그것은 오픈 소스 화입니다.

3

데이터베이스 마이그레이션 도구 목록을 완성하기 위해 나는 solidbase에 만족합니다. 배포 스크립트의 일부로 시작하지만 싱글 톤 빈에서 시작하는 아이디어는 상당히 흥미 롭습니다. Solidbase의 위키는 그러한 임베디드 사용법을 문서화하지 않지만 소스 코드 클래스의 빠른 탈피에서 Runner을 찾고 있습니다.

관련 문제