데이터베이스 스키마 자동 생성
- DDL을 애플리케이션 실행 시점에 자동 생성
- 테이블 중심 → 객체중심
- 데이터베이스 방언(Dialect)을 활용해서 데이터베이스에 맞는 적절한 DDL 생성
- 오라클 varchar2 mysql varchar ... 등 데이터베이스에 맞는 타입으로 생성
- 이렇게 생성된 DDL은 개발 장비에서만 사용
- 생성된 DDL은 운영서버에서는 사용하지 않거나, 적절히 다듬은 후 사용
hibernate.hbm2ddl.auto
- create
- 기존테이블 삭제 후 다시 생성(DROP + CREATE)
- create-drop
- create와 같으나 애플리케이션 종료시점에 테이블 DROP
- 주로 테스트케이스를 작성하는 환경에서 사용
- update
- 변경분만 반영(운영 DB에는 사용하면 안됨)
- validate
- 엔티티와 테이블이 정상 매핑되었는지만 확인
- none
- 사용하지 않음
⚠️ 주의 사항
- 운영 장비에는 절대 create, create-drop, update를 사용하면 안된다.
- 개발 초기 단계는 create 또는 update
- 테스트 서버는 update 또는 validate
- 스테이징과 운영 서버는 validate 또는 none
- 데이터베이스에 직접적인 작업을 하는것을 애플리케이션에 일임할 경우 데이터베이스에 문제 또는 서비스 장애로 이어지는 문제를 예상할 수 없기 때문에 사용하지 않는다. alter table을 한다고 가정했을시 운영에 존재하는 데이터에 따라 예상시간을 가늠할 수 없고 그 시간동안 해당 테이블에 접근이 불가 할 수 있고 그로 인해 서비스에 장애로 이어질 수 있기 때문이다.
- 대부분의 규모가 있는 회사 또는 서비스라면 애플리케이션 계정에서 DDL이 불가 할 것이다. 계정에 권한관리 및 접근제어를 통한 처리를 할 것이다.
'Spring > JPA' 카테고리의 다른 글
필드와 컬럼 매핑 (0) | 2023.06.15 |
---|---|
엔티티 매핑 (0) | 2023.06.15 |
JPA 란 무엇이고 왜 사용해야 하는가 (0) | 2021.12.24 |
엔티티 매핑과 기본키 전략 (0) | 2021.12.23 |
영속성 컨텍스트와 플러시 (0) | 2021.12.23 |