[스프링] JPA와 제약조건

JPA(Java Persistence API)를 사용할 때 엔티티에 제약조건을 적용하는 방법을 살펴보겠습니다.

@UniqueConstraint 어노테이션

JPA에서는 @UniqueConstraint 어노테이션을 사용하여 테이블 수준에서 고유 제약조건을 정의할 수 있습니다. 이 어노테이션을 사용하여 하나 이상의 칼럼의 조합이 고유해야 함을 지정할 수 있습니다.

예를 들어, 아래 코드와 같이 두 개의 칼럼 조합이 고유해야 하는 경우 @UniqueConstraint 어노테이션을 사용할 수 있습니다.

@Entity
@Table(name = "employees", uniqueConstraints = {
    @UniqueConstraint(columnNames = {"emp_id", "emp_email"})
})
public class Employee {
    //...
}

@Column 어노테이션

JPA의 @Column 어노테이션은 칼럼 레벨에서 제약조건을 정의할 수 있습니다. 다음은 @Column 어노테이션을 사용하여 NOT NULL 제약을 정의하는 예제입니다:

@Column(name = "first_name", nullable = false)
private String firstName;

데이터베이스 수준 제약조건

제약조건이 복잡하거나 특정 데이터베이스에 종속적인 경우, JPA 어노테이션만으로는 제약조건을 충족하기 어려울 수 있습니다. 이러한 경우에는 데이터베이스 스키마나 DDL 스크립트에서 직접 제약조건을 정의하는 것이 좋습니다.

결론

JPA를 사용하면 엔티티에 다양한 제약조건을 정의할 수 있습니다. @UniqueConstraint@Column 어노테이션을 통해 간단한 제약조건을 지정할 수 있으며, 데이터베이스 수준에서 추가적인 제약조건을 정의할 수도 있습니다.

관련 자료: