본문 바로가기
Spring/JPA

스키마 자동 생성(Auto DDL)

by godkoo 2023. 6. 15.

데이터베이스 스키마 자동 생성

  • 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