[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의 실행 로직에는 영향을 주지 않는다.
참고 자료
'JPA > Spring Data JPA' 카테고리의 다른 글
[Spring Data JPA] 09. JPA 단방향 연관관계 (0) | 2023.04.25 |
---|---|
[Spring Data JPA] 08. JPA 필드와 컬럼 기본키 매핑 (0) | 2023.04.25 |
[Spring Data JPA] 06. JPA 객체와 테이블 매핑 방식 (0) | 2023.04.25 |
[Spring Data JPA] 05. 영속성 컨텍스트 (0) | 2023.04.25 |
[Spring Data JPA] 04. 프로젝트 생성 (0) | 2023.04.25 |
블로그의 정보
기록하고, 복기하고
ymkim