spring.jpa.hibernate.ddl-auto 속성은 봄에 정확히 어떻게 작동합니까?
Spring boot app 프로젝트를 진행하다가 다른 서버(SQL Server)의 데이터베이스에 접속 타임아웃 오류가 발생할 수 있습니다.은 특히 하려고 할 때 합니다.FlyWay몇 번을 시도하면 효과가 있어요.
나는 내가 명기하지 을 알아차렸다.spring.jpa.hibernate.ddl-auto내 속성 파일에 있습니다., '아까부터', '아까부터', '아까부터', '아까부터', '아까부터'를 것이 .spring.jpa.hibernate.ddl-auto= create-drop '하다, 하다, 하다, 하다.spring.jpa.hibernate.ddl-auto= none가동중중 중중중다다
실제로 어떻게 하지 못했습니다.create-drop ★★★★★★★★★★★★★★★★★」none하는지, 이 시 및 server.value에서 ? 실제로 어떻게 작동하는지, 그리고 개발 및 운영 서버에서 이 속성을 사용하기 위한 권장 사항이 무엇인지 기술적으로 설명해 주시겠습니까?합니다.
<고객명>님은spring.jpa.hibernate.ddl-auto하며 Spring Data JPA가 있는 입니다.hibernate.hbm2ddl.auto.
값create,create-drop,validate , , , , 입니다.update기본적으로 스키마 도구 관리가 시작 시 데이터베이스 스키마를 조작하는 방법에 영향을 줍니다.
를 들면, 「」는,update작업은 데이터베이스 메타데이터를 얻기 위해 JDBC 드라이버의 API를 쿼리하고, 다음으로 Hibernate는 주석이 달린 클래스 또는 HBM XML 매핑을 읽고 작성된 오브젝트 모델을 비교하여 스키마를 즉시 조정하려고 시도합니다.
update예를 들어, 작업은 새 열, 제약 조건 등을 추가하려고 시도하지만 이전에 존재했을 수 있지만 이전 실행에서 개체 모델의 일부로 더 이상 제거되지 않는 열 또는 제약 조건을 제거하지 않습니다.
으로 테스트 ""를 합니다.create-drop스키마를 작성하기 위해 테스트 케이스는 몇 가지 모의 데이터를 추가하고 테스트를 실행합니다.테스트 케이스 청소 중에 스키마 오브젝트가 삭제되어 데이터베이스가 비어 있습니다.
중에 하는 것은 볼 수 있는 일입니다.update스키마를 자동으로 변경하여 재시작 시 새로운 추가를 추가합니다.그러나 다시 한 번 이해하면 이전 실행에서 더 이상 필요하지 않은 열이나 제약 조건이 제거되지 않습니다.
때는 가, 상, 음, 음을 사용하는 것이 좋습니다none또는 단순히 이 속성을 지정하지 않습니다.이는 DBA가 데이터베이스 변경에 대해 마이그레이션 스크립트를 검토하는 것이 일반적이기 때문입니다. 특히 데이터베이스가 여러 서비스와 애플리케이션에서 공유되는 경우에는 더욱 그렇습니다.
Spring/Spring-Boot에서는 스택에 따라 다른 방법으로 SQL 데이터베이스를 초기화할 수 있습니다.
JPA에는 DDL 생성용 기능이 있으며 시작 시 데이터베이스에 대해 실행되도록 설정할 수 있습니다.이는 다음 두 가지 외부 속성을 통해 제어됩니다.
spring.jpa.generate-ddl(임의) 기능의 온/오프를 전환하고 벤더에 의존하지 않습니다.spring.jpa.hibernate.ddl-auto(은 동작을 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
최대 절전 모드 속성 값: create, update, create-drop, validate 및 none:
- create – 먼저 기존 테이블을 폐기하고 새 테이블을 만듭니다.
- update – 매핑(주석 또는 XML)에 따라 작성된 오브젝트모델을 기존 스키마와 비교한 후 Hibernate는 그 차이에 따라 스키마를 업데이트합니다.응용 프로그램에서 더 이상 필요하지 않은 경우에도 기존 테이블이나 열은 삭제되지 않습니다.
- create-drop – create와 마찬가지로 모든 작업이 완료된 후 휴지 상태가 데이터베이스를 폐기합니다.통상 유닛 테스트에 사용
- validate – 휴지 상태에서는 테이블과 컬럼이 존재하는지 여부만 검증됩니다.존재하지 않을 경우 예외가 발생합니다.
- none – 이 값은 DDL 생성을 효과적으로 차단합니다.
Spring Boot에서는 스키마 매니저가 검출되지 않은 경우 이 파라미터 값은 내부적으로 create-drop으로 디폴트 설정되어 있습니다.그 이외의 경우는 none으로 설정되어 있습니다.
"spring.jpa.containate.ddl-auto=create-drop"은 서버 실행 시 데이터베이스(테이블) 인스턴스가 작성됨을 의미합니다.서버가 정지할 때마다 데이터베이스 테이블인스턴스가 드롭 됩니다
JPA/Hibernate spring.jpa.hibernate.ddl-auto 값은 create, update, create-drop 이외의 값으로 해야 합니다.이러한 값에 대한 올바른 의미는 다음과 같습니다.
[ Create ]: 서버를 시작할 때 모든 엔티티가 새로 생성됩니다.
Update : 서버가 어떤 엔티티가 갱신되고 어떤 엔티티가 새로 작성되었는지 컨테이너가 검출되면 데이터베이스 내부에서도 같은 일이 발생하며 오래된 테이블도 엔티티에 따라 갱신되고 새로운 테이블이 생성됩니다.
Create-drop: 서버가 부팅되면 auto all entity가 실행되며 서버가 정지하면 모든 엔티티가 데이터베이스에서 자동으로 삭제됩니다.
none : 데이터베이스 ddl은 백엔드 어플리케이션의 영향을 받지 않습니다.주의: 실제 가동 환경은 항상 값을 지정하지 않습니다.
언급URL : https://stackoverflow.com/questions/42135114/how-does-spring-jpa-hibernate-ddl-auto-property-exactly-work-in-spring
'programing' 카테고리의 다른 글
| Angular에 ng-repeat 스코프가 있는 Directive Isolate 스코프JS (0) | 2023.02.22 |
|---|---|
| AngularJS: 디플링으로 $locationProvider.html5Mode를 활성화하는 방법 (0) | 2023.02.22 |
| 잭슨과 함께 몇 초 만에 타임스탬프를 역직렬화하려면 어떻게 해야 하나요? (0) | 2023.02.22 |
| Angular란JS가 jQuery보다 잘해요? (0) | 2023.02.22 |
| AngularJS를 사용하여 요소의 폭을 얻는 방법은 무엇입니까? (0) | 2023.02.22 |