최대 절전 모드를 사용하여 데이터베이스 스키마를 크게 만드는 방법

StackOverflow https://stackoverflow.com/questions/835961

문제

읽고 나서 Hibernate : hbm2ddl.auto = 프로덕션 업데이트? 몇 가지 질문이 생겼습니다. 우선, Hibernate를 사용하는 이유는 데이터베이스 공급 업체 독립이기 때문입니다 ( "동일한"SQL 쿼리, 예를 들어 TSQL 대 SQL의 10 버전을 작성할 필요는 없습니다).

데이터베이스 스키마 (생산 환경)를 만들 때 내 문제가 나타납니다. 내가 볼 수있는 한 두 가지 대안이 있습니다.

  1. hbm2dll = 업데이트
  2. 순수한 SQL (DDL) 스크립트.

첫 번째 대안은 위의 스레드에서 널리 논의됩니다. 두 번째 대안은 내가 첫 번째 문제로 돌아 왔기 때문에 나쁘다. "데이터베이스 공급 업체의 종속 인 SQL 문을 만들고 싶지 않다". ( "All"(데이터베이스 최대 절전 모드 지원)이 DDL (데이터베이스의 구조를 정의하고 검사하는 데 사용되는 SQL의 서브 세트.) 동일).

도움이 되었습니까?

해결책

개발/준비 모드의 모든 변경 사항을 수행하고 생산에서 스크립트를 전송 및 실행하고 수동으로 (또는 자동으로, 동면을 실행하지 마십시오). HBM2DDL 업데이트가 모든 경우를 다루지 않기 때문에 스크립트는 약간의 튜닝이 필요할 수 있습니다.

실제로 나는 최대 절전 모드가 데이터베이스에 대해 DDL을 실행하게하지 않습니다. HBM2DDL을 사용하여 텍스트를 생성합니다.

org.hibernate.tool.hbm2ddl.SchemaExport --config=hibernate.cfg.xml --text --format --delimiter=;

org.hibernate.tool.hbm2ddl.SchemaUpdate --config=hibernate.cfg.xml --text --format --delimiter=;

다른 팁

일반적으로 JPA 스키마를 덤프하는 도구는 다음을 기반으로합니다. SchemaExport 정적 메타 데이터 만 읽는 도구.

Maven/Gradle 플러그인이 있습니다 https://github.com/devskiller/jpa2ddl JPA 스키마를 생성합니다. 모든 속성, 이름 지정 전략, 사용자 유형 등이 포함됩니다.

또한 사용하여 자동 스키마 마이그레이션을 생성 할 수도 있습니다. 비행장.

나는 최대 절전 모드를 좋아하고 (많이), 그것은 엄청나게 좋은 품질 코드를 만들 것이라고 생각하지만, 나는 매우 잘 관리 된 그리즐리 곰 베이비 시트를 허용하는 것보다 프로덕션 데이터베이스에서 더 빨리 느슨하게 돌리지 않을 것입니다. 모든 것이 잠시 동안 잘 될 수 있지만, 나쁜 일이 나빠진 사건은 진짜 나쁜.

내 제안은 테스트 환경에 있으며, 최대 절전 모드 데이터베이스 스키마를 생성하도록합니다. 테스트 환경에서 테스트하십시오. 그런 다음 해당 스크립트를 프로덕션 환경으로 가져 가서 실행하십시오. 거기에 특이성을 주목하십시오. 테스트가 환상적으로 성공하더라도, 나는 여전히 최대 절전 모드가 프로덕션 서버에서 야생으로 가도록 허용하지 않을 것입니다. 최대 절전 모드 Schemagen의 출력을 가져 와서 테스트 한 다음 검증되면 프로덕션 서버에 배포하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top