IT/JPA
DDL생성 기능 - 제약 조건, 유니크 제약 조건
WsCode
2022. 5. 10. 22:15
깃허브 정리 URL : https://github.com/sWineTake/jpa.git
GitHub - sWineTake/jpa: 자바 ORM 표준 JPA 프로그래밍 - 김영한
자바 ORM 표준 JPA 프로그래밍 - 김영한. Contribute to sWineTake/jpa development by creating an account on GitHub.
github.com
조금더 조건을 추가해보겠습니다.
회원 이름을 필수로 입력되어야하며, 10자를 초과하면 안된다는 제약조건이 추가되었습니다.
Member 엔티티에 아래와 같이 name을 변경하였습니다.
@Column(name = "name", nullable = false, length = 10)
private String username;
@Column 매핑정보의 nullable 속성 값을 false로 지정하면 자동 생성되는 DDL에 not null 제약 조건을 추가할 수 있습니다. 그리고 length 속성 값을 사용하면 자동 생성되는 DDL에 문자의 크기를 지정 할 수 있습니다.
생성된 DDL 문은 아래와같습니다.
name 컬럼을 보시면 기존 VARCHAR(255)에서 VARCHAR(10) not null 로 변경된것을 확인 할 수 있습니다.
create table MEMBER (
id varchar(255) not null,
age integer,
create_date datetime(6),
description longtext,
last_modified_date datetime(6),
role_type varchar(255),
name varchar(10) not null,
primary key (id)
) engine=InnoDB
이번에는 유니크 제약조건을 만들어 주는 @Table의 uniqueConstraints 속성입니다.
...
@Table(name = "MEMBER", uniqueConstraints = {@UniqueConstraint(
name = "NAME_AGE_UNIQUE",
columnNames = {"name", "age"})})
public class Member {
...
}
생성된 DDL문은 아래와 같습니다.
alter table MEMBER
add constraint NAME_AGE_UNIQUE unique (name, age)
유니크 제약조건이 추가되었습니다.
본 게시글의 내용은 단지 DDL을 자동 생성할 때만 사용되고 JPA의 실행 로직에는 영향을 주지 않습니다.
따라서 스키마 자동 생성 기능을 사용하지 않고 직접 DDL을 만든다면 사용할 이유가 없습니다.