방명록
- [JPA] 4. 데이터베이스 스키마 자동 생성2025년 02월 14일 19시 54분 26초에 업로드 된 글입니다.작성자: nickhealthy
`hibernate.hbm2ddl.auto`는 JPA에서 Hibernate가 데이터베이스 스키마를 자동으로 생성하거나 업데이트하는 기능을 제어하는 설정이다. 설정 값에 따라 DDL(Data Definition Language)을 애플리케이션 실행 시점에 자동 생성할지 결정한다.
설정 값 목록
옵션 설명 create 기존 테이블 삭제 후 다시 생성(DROP -> CREATE) create-drop CREATE와 같으나 종료 시점에 테이블 DROP(CRATE -> DROP) update 기존 테이블을 유지하며, 엔티티 클래스에 맞게 스키마를 자동으로 업데이트.(변경분만 반영) validate 기존 스키마와 엔티티 클래스가 일치하는지 검증.
변경은 하지 않음.none 스키마 자동 생성/업데이트를 하지 않음. - 운영 환경에서는 절대 `create`, `create-drop`, `update` 옵션을 사용하면 안된다.
- create, create-drop: 운영 데이터가 모두 날라간다.
- update: 테이블 수정이 이뤄지면 테이블 전체에 락이 발생할 수 있다. 락 발생 시 서비스 장애로 이어진다.
- 개발 초기 단계는 `create` 또는 `update` 사용
- 스테이징과 운영 서버는 `validate` 또는 `none` 사용
DDL 생성 기능
아래와 같은 제약 조건을 엔티티에서 설정할 수 있는데 이것을 'DDL 생성 기능'이라고 한다.
DDL 생성 기능은 DDL을 자동 생성할 때만 사용되고, JPA의 실행 로직(런타임)에는 영향을 주지 않는다.
🔹 예제 코드
DDL 생성 기능을 통해 `name` 컬럼의 제약 조건을 추가했다.
package hellojpa; import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.Id; // JPA가 관리할 객체 @Entity public class Member { @Id // 데이터베이스 PK와 매핑 private Long id; // DDL 생성 기능 @Column(unique=true, length = 10) private String name; }
🔹 결과
테이블을 생성할 때 제약조건도 추가되는 것을 확인할 수 있다.
하이버네이트 설정 값(`hibernate.hbm2ddl.auto`)이 `create`가 아닌 `update` 옵션도 마찬가지로 제약조건이 추가된다.결과 다음글이 없습니다.이전글이 없습니다.댓글 - 운영 환경에서는 절대 `create`, `create-drop`, `update` 옵션을 사용하면 안된다.