- JPA에서 애플리케이션 로딩 시점에 CREATE 쿼리로 DB 테이블을 생성하는 기능도 지원해준다.
- 생성된 DDL은 운영단계에서는 사용하면 곤란하다..
- 보통은 개발단계나 로컬 PC에서 개발할 때 사용한다.
- 객체 매핑을 다 해 놓으면 테이블이 생성되므로 객체 중심적인 개발이 가능하다.
- DB 방언을 활용해서 DB에 맞는 적절한 DDL을 생성한다.
DB 스키마 자동 생성 - 속성
- create
- 기존 테이블을 삭제 후 다시 생성한다.
- DROP + CREATE
- create-drop
- create와 같지만, 종료시점에 테이블을 DROP한다.
- update
- 변경분만 반영한다.
- 운영DB에서는 사용하면 안된다.
- 보통은 애플리케이션 코드에서 필요한 업데이트를 수행하도록 구현한다.
- validate
- 엔티티와 테이블이 정상 매핑되었는지만 확인한다.
- none
- 사용하지 않는다.
- 그냥 지우거나 아무거나 쓰는거랑 비슷하지만, 관례상 넣는 것.
DB 스키마 자동 생성 - 주의사항
- 운영 장비에는 절대로 create, create-drop, update를 사용하면 안된다.
- 개발 초기 단계는 create, update
- 테스트 서버는 update, validate
- 여러 개발자들이 함께 사용하는 상황인데, create 사용 시 배포할 때마다 데이터가 날아가버린다.
- 스테이징과 운영 서버는 validate 또는 none
- 시스템이 자동으로 ALTER를 해줄 경우 굉장히 위험한 상황 발생 가능.
- 직접 ALTER 테이블 스크립트를 테스트 서버에 먼저 반영 해보고, 운영 서버에 적용하는게 맞다.
- 애초에 계정 자체가 ALTER DROP이 불가능하도록 분리해두면 된다.
DDL 생성 기능
-
- 애플리케이션 자체보다는 DDL을 자동 생성할 때만 사용된다.
- JPA 로직에는 영향을 주지 않는다.
- ex) 회원 이름은 필수이고 10자를 초과할 수 없다.
- @Column**(nullable = false, length = 10)**제약조건 추가 기능
'Spring > JPA 프로그래밍 - 기본편' 카테고리의 다른 글
기본 키 매핑 (0) | 2023.04.14 |
---|---|
필드와 컬럼 매핑 (0) | 2023.04.13 |
객체와 테이블 매핑 (0) | 2023.04.11 |
준영속 상태 (0) | 2023.04.10 |
플러시 (0) | 2023.04.09 |