🌱 SPRING/JPA

[JPA] 스키마 자동 생성

1HOON 2020. 6. 13. 16:23

 

JPA에서는 엔티티를 이용해 데이터베이스 스키마를 자동으로 생성해주는 기능을 제공한다. 실제 프로젝트를 수행할 때는 사용하면 안되는 기능이지만, 개인 프로젝트나 학습용으로는 좋은 기능인듯하다.

 

 

자동생성 옵션

스키마 자동 생성 옵션은 persistence.xml에서 지정한다.

<property name="hibernate.hbm2ddl.auto" value="update"/>

위 property를 원하는 persistence-unit에 추가해주면 된다. 그리고 value 속성의 값에 따라 동작이 달라지는데, 아래와 같다.

 

  • create : 기존 테이블을 삭제하고 다시 생성한다.
  • create-drop : create 옵션과 동일하나 애플리케이션 종료 시점에 테이블을 제거한다.
  • update : 변경 내용만을 반영한다.
  • validate : 엔티티와 테이블이 정상적으로 매핑되었는지만 확인한다.
  • none : 사용하지 않는다.

 

이 옵션으로 인해 DB 스키마에 변경이 생기므로, 실제 프로젝트 수행시에는 none이나 validate를 사용한다.

 

 

DDL 생성 기능

DDL 생성 기능을 위의 스키마 자동 생성기능을 사용해 DDL을 자동 생성할 때만 사용되고 그외 JPA 실행 로직에는 영향을 주지 않는다. 때문에 사용하지 않아도 문제는 없으나, 개인적으로 개발자가 DB 컬럼에 대한 정보를 Java code에서 얻을 수 있기 때문에 사용해도 나쁠건 없을 것 같다.

 

제약조건 추가

엔티티 필드에 @Column 어노테이션을 추가해 지정할 수 있다. 예를 들어, 회원 이름 컬럼이 NOT NULL이고 최대 10자일 경우 아래처럼 지정할 수 있다.

@Entity
public Class Member 
{
	@Column(nullable = false, length = 10)
	private String name;
}

 

유니크 제약조건 추가

테이블의 Unique 제약조건은 아래와 같이 지정 가능하다.

@Entity
@Table(uniqueConstraints = { @UniqueConstraint(name="NAME_AGE_UNIQUE", columnNames = {"NAME", "AGE"}) })
public class Member
{
	...
}

 

 


출처 :: 인프런 강의(자바 ORM 표준 JPA 프로그래밍 - 기본편)

반응형