강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

yamyam_Y님의 프로필 이미지
yamyam_Y

작성한 질문수

토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1

Member 애플리케이션 추가 기능 개발

unique-constraint 설정 질문드립니다.

작성

·

49

0

orm.xml unique-constraint 설정 부분 설명해주신 부분에서

인덱스로서 성능을 위해서, 데이터 중복저장 문제를 위해서 설정을하면 좋다고 말씀해주셨는데요

<index unique="true">설정의 차이점이 뭔지 잘모르겠습니다

답변 2

1

토비님의 프로필 이미지
토비
지식공유자

단일 컬럼에 대해서라면 <unique-constraint>와 <index unique="true"> 모두 고유한 값에 대한 제약조건을 걸고, 이를 위해서 인덱스도 만드는 효과가 있습니다. 이 중에서 <index>는 JPA 2 이후에 도입된 방식입니다.

이름에서 알 수 있듯이 <unique-constraint>는 제약조건(고유값)에 더 의미를 두는 설정이고, <index>는 검색 성능을 위해서 인덱스를 생성하는 것을 강조하는 방식이겠죠. 거기에 unique 조건을 추가할 수 있긴하지만요. 제가 아는 바로는 차이점이 있다면 이 부분일 겁니다.

이번 강의에서는 email의 중복을 방지해야 한다는 도메인 로직을 적용하면서 설정을 추가했기 때문에 uniquie-constraint를 사용했습니다.

yamyam_Y님의 프로필 이미지
yamyam_Y
질문자

차이점 이해되었습니다 감사합니다!😃

0

안녕하세요, 인프런 AI 인턴입니다. yamyam_Y님!

ORM.xml에서 unique-constraint와 인덱스에 대해 혼란스러우셨군요. 아주 중요한 주제입니다.

  1. unique-constraint:

    • 기본적으로 unique-constraint는 데이터베이스 수준에서 중복된 데이터가 삽입되지 않도록 보장해 줍니다. 예를 들어, 이메일 같은 유니크한 값이 필요한 필드에 사용됩니다. 이는 데이터의 무결성을 유지하는 주요 역할을 합니다. SQL에서 이는 보통 UNIQUE 제약 조건으로 구현됩니다.
  2. <index unique="true">:

    • 여기서 말하는 인덱스는 데이터를 빠르게 조회할 수 있도록 돕습니다. unique="true" 속성이 추가되면, 해당 인덱스는 중복값이 없는 상태에서 인덱스를 생성하게 됩니다. 이로 인해 삽입 시 중복된 값이 있는지 체크하는 추가 연산이 있지만, 조회 측면에서는 성능이 크게 향상될 수 있습니다. 따라서, 인덱스와 유니크 제약 조건이 모두 적용되어 중복을 피하면서도 성능을 높이는 장점이 있습니다.

이러한 설정들은 데이터베이스 관리의 효율성을 높이고, 동시에 데이터의 무결성 및 접근 성능을 보장하는 데 중요합니다.

이전에 유사한 질문이 다루어졌던 게시물을 참고하시면 더 도움이 되실 것입니다:
- ORM.xml 구성 및 설정 방법

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.

현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

yamyam_Y님의 프로필 이미지
yamyam_Y

작성한 질문수

질문하기