• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

sequence id값이 공유(?)되는 현상에 대한 질문

23.06.20 13:39 작성 조회수 165

0

@GeneratedValue에 의해 Sequence가 호출되어서 순차값이 id에 부여되어 저장되는것으로 알고있습니다.

근데, team의 id와 member의 id의 sequence가 마치 공유가 되는듯이 team의 id가 1, 2 그리고 member의 id가 3, 4, 5, 6 으로 저장이 되는 부분에 대해서

@Column으로 각각의 id 이름을 다르게 부여했다고 하더라도 @GeneratedValue 어노테이션은 엔티티에 정의한 필드명에 맞춰서 생성이 되어서 그런것인지 궁금합니다.

또한, 만약 위 원리가 맞다면 실무에서는 이런 부분에 대해서 각각을 명확하게 구분지어서 해야할거같다 라는 생각이 들었으며,

그렇다면 실무에서는 애초에 @Column에 의한 DB 컬럼명 변경이 아닌 엔티티 자체의 필드명에서 부터 다르게 지정해 줘야 하는것이 아닐까 하는 생각을 해봤습니다.

이 부분에 대해 바람직하게 생각한것이 맞을까요?

답변 1

답변을 작성해보세요.

2

David님의 프로필

David

2023.06.21

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

현재 강의에서는 H2를 사용중입니다.

H2의 경우 기본적으로 글로벌 시퀀스를 사용합니다.

따라서, 별도의 시퀀스를 만들고 그걸 각 엔티티에 적용하지 않는다면 멤버와 팀의 id가 동일한 시퀀스를 사용하게 됩니다.

감사합니다.

kate님의 프로필

kate

질문자

2023.06.21

엔티티별로 별도의 시퀀스를 만드는것은 필드명을 변경 하는 것으로는 소용없나요?

jpa의 어노테이션등의 기능으로 존재할까요?

David님의 프로필

David

2023.06.21

만약 엔티티 별로 시퀀스를 따로 가져가고 싶으시다면 @SequenceGenerator에 대해 찾아보시면 좋을 것 같습니다.