DEV/Spring

[JPA] Unique 제약 조건

2023. 3. 28. 21:25

데이터베이스 설계 시, 단일로 들어가야하는 조건을 넣어야 하는 경우 유니크 제약조건을 넣는다.

예를 들어 회원의 아이디 또는 이메일과 같이 로그인 시 중복되지 않아야하는 경우를 말한다.

 

JPA 코드 상에서 단일 조건의 경우

@Entity
@Table(name = "UNIQUE_ENTITY")
@NoArgsConstructor
public class UniqueEntity {

    @Id
    @GeneratedValue(strategy= GenerationType.IDENTITY)
    private Long id;

    @Column(name = "unique_one", unique = true)
    private Long uniqueOne;

    @Column(name = "unique_two")
    private Long uniqueTwo;

}

@Column 어노테이션에 unique = true 설정을 추가한다.

 

 

JPA 코드 상에서 두개 이상의 조건(복합키)인 경우

@Entity
@Table(name = "UNIQUE_ENTITY",
        uniqueConstraints={
        @UniqueConstraint(
                name="contstraintName",
                columnNames={"unique_one", "unique_two"} // DB 상의 column name 을 작성해야한다. (변수명X) 
        )
})
@NoArgsConstructor
public class UniqueEntity {

    @Id
    @GeneratedValue(strategy= GenerationType.IDENTITY)
    private Long id;

    @Column(name = "unique_one")
    private Long uniqueOne;

    @Column(name = "unique_two")
    private Long uniqueTwo;

}

@Table 어노테이션 안에 제약조건 이름과 컬럼 이름을 작성해주면 된다.

이때 columnNames 안에 컬럼 명은 변수명으로 작성하는 것이 아니여서 DB 상의 컬럼 명 변경 시 같이 변경해줘야한다.

(나는 저런 부분이 변수명 작성인지 DB 컬럼명 작성인지 매번 헛갈려서 이 글에 기록용으로 남겨두려한다.)

728x90

'DEV > Spring' 카테고리의 다른 글

[Spring] Spring Security 란?  (1) 2023.07.26
[Spring] Exception Handler (with. Spring Data Rest)  (1) 2023.07.12
[Spring] Spring Data Rest 란?  (0) 2023.07.10
[JPA] Repository 인터페이스  (0) 2023.04.19
[Spring] Spring Framework 란?  (1) 2023.03.31
'DEV/Spring' 카테고리의 다른 글
  • [Spring] Exception Handler (with. Spring Data Rest)
  • [Spring] Spring Data Rest 란?
  • [JPA] Repository 인터페이스
  • [Spring] Spring Framework 란?
l-eazzy
l-eazzy
귀찮고 귀찮은데 귀찮기 싫어서 개발하는 귀찮은 개발자.
귀찮은 개발자의 블로그귀찮고 귀찮은데 귀찮기 싫어서 개발하는 귀찮은 개발자.
l-eazzy
귀찮은 개발자의 블로그
l-eazzy
전체
오늘
어제
  • 분류 전체보기 (89)
    • DEV (68)
      • Language (3)
      • Spring (22)
      • Node (4)
      • Flutter (1)
      • Infra (15)
      • DataBase (2)
      • Airflow (2)
      • ErorrBox (8)
      • Etc (11)
    • REVIEW (8)
      • IT (7)
      • 카메라 (1)
    • Daily (10)
      • 출사 (1)
      • 그냥 (1)
      • 오늘의 점심 (7)
    • 아무거나 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Airflow
  • springboot
  • AWS
  • Spring
  • QueryDSL
  • 오블완
  • 티스토리챌린지
  • 강남
  • JPA
  • docker

최근 댓글

최근 글

hELLO · Designed By 정상우.
l-eazzy
[JPA] Unique 제약 조건
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.