Lined Notebook

[Spring Data JPA] 07. JPA 자동 스키마 생성

by ymkim

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

  • 애플리케이션 실행 시점에 DDL(CREATE..) 자동 생성 해준다.
  • 객체(Entity)를 생성해두면 JPA가 모든 테이블을 자동 생성 해준다.
  • DB 방언을 활용, DB에 맞는 적절한 DDL 생성.
  • 이렇게 생성된 DDL은 개발 서버에서만 사용해야 한다.
  • 생성된 DDL을 운영 서버에서는 사용 하면 안된다.

✔ 데이터베이스 스키마 자동 생성 - 속성

hibernate.hbm2ddl.auto

결론은 validate, none만 사용하는 것을 지향해야 한다.

  • create
    • 기존 테이블 삭제 후 다시 생성 (DROP + CREATE)
  • create-drop
    • create와 같으나 종료 시점에 테이블 DROP
  • update
    • 변경 부분만 반영(운영 DB에서는 사용하면 안됨)
    • 추가만 되고, 삭제는 불가
  • validate
    • 엔티티와 테이블이 정상 매핑 되었는지만 확인
  • none
    • 사용 안함

데이터베이스 스키마 자동 생성 시 주의할 부분

  • 운영 장비에는 절대 create, create-drop, update 절대 사용하면 안된다.
  • 개발 초기 단계create 또는 update만 사용.
  • 테스트 서버update 또는 validate 사용.
  • 스테이징운영 서버validate 또는 none.
  • update는 DB에 alter를 날리기 때문에 DB에 락이 걸릴 수 있기에 사용을 지양해야 한다.
  • 가급적이면 직접 스크립트를 짜서 적용한다.

DDL 생성 기능

  • 제약 조건 추가
    • 회원 이름은 필수
    • 10자를 초과하지 않는다
    • @Column(nullable = false, length = 10)
  • 유니크 제약 조건 추가
@Table(
  uniqueConstraints = (
    @UniqueConstraint(name="NAME_AGE_UNIQUE",columnnames = {"Name, "AGE"})))
  • DDL 자동 생성 기능JPA의 실행 메커니즘에 영향을 주는것이 아니다.
  • JPA가 해당 @Column 어노테이션을 보고 DDL을 생성 하는데만 영향을 준다.
  • DDL 생성 기능은 DDL을 자동 생성할 때만 사용되고 JPA의 실행 로직에는 영향을 주지 않는다.

참고 자료

블로그의 정보

기록하고, 복기하고

ymkim

활동하기