강의

멘토링

로드맵

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

gmlwjd4667님의 프로필 이미지
gmlwjd4667

작성한 질문수

자바 ORM 표준 JPA 프로그래밍 - 기본편

기본 키 매핑

SEQUENCE전략 궁금한게 있습니다!

작성

·

211

0

안녕하세요.

궁금한점이 SEQUNCE전략에서

@GeneratedValue(strategy = GenerationType.SEQUENCE)를 써서 

하이버네이트가 제공하는 기본 시퀀스를  쓰고

그리고  테이블마다 시퀀스를 따로 관리하기위해

@SequenceGenerator를 쓰라고 하셨는데

궁금한점이 테이블마다 시퀀스를 따로 둬서 관리하는 이유가 무엇인지 궁금합니다.

항상 감사드립니다.

퀴즈

JPA에서 클래스를 엔티티로 매핑하기 위해 `@Entity` 어노테이션을 사용할 때, 해당 클래스가 기본적으로 갖춰야 할 중요한 조건은 무엇일까요?

모든 필드가 public이어야 한다

final 클래스여야 한다

public 또는 protected 기본 생성자가 있어야 한다

static 메소드를 하나 이상 포함해야 한다

답변 2

0

아그러면 sequence를 쓰는경우 table이 두개이상인 경우부터는 generatedvalue어노테이션이 필수인거네요?!

0

안녕하세요. gmlwjd4667님, 공식 서포터즈 OMG입니다.

테이블마다 시쿼스를 따로 둬서 관리하지 않을 경우 다음과 같은 상황이 발생하게 됩니다.

예를 들어, ITEM 테이블과 MEMBER 테이블이 있을 때

MEMBER 데이터 하나가 생성되면 해당 데이터의 id는 시퀀스의 1을 부여받습니다.

이후 ITEM 1개가 등록되면 처음 등록한 item이지만 시퀀스가 공유되어 id가 2가 됩니다.

이러한 상황이 발생되면 id의 증가가 예측 불가능하게 증가가 되어 기본 키로 지정한 id가 누락이 된 것 인지 판별이 힘들고, 하나의 시퀀스를 공유하기 때문에 값 크기가 기하급수적으로 커질 수 있습니다.

 

감사합니다.

gmlwjd4667님의 프로필 이미지
gmlwjd4667

작성한 질문수

질문하기