twocowsong

DDL생성 기능 - 제약 조건, 유니크 제약 조건 본문

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을 만든다면 사용할 이유가 없습니다.

'IT > JPA' 카테고리의 다른 글

기본 키 직접 할당 전략  (0) 2022.05.13
기본키 매핑 - 기본 키 생성 전략  (0) 2022.05.11
DB스키마 자동 생성  (0) 2022.05.10
@Table  (0) 2022.05.09
@Entity  (0) 2022.05.09