• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

Sequence 전략에서 Sequence정보를 어디에 저장하나요?

23.08.15 18:42 작성 조회수 263

0

처음에는 MEMBER_SEQ를 영속성 컨텍스트의 어딘가... 에 저장할거 라고 생각했는데

영속성 컨텍스트는 트랜잭션이 커밋될때 같이 종료되기 때문에, 그렇진 않을 것 같다는 생각이 들었습니다. 이러한 방식이면 트랜잭션마다 AllocationSize만큼의 빈 공간이 생기는 사태가 발생하니까요

그냥 JPA 내부 Entity의 정보를 저장하는 어딘가에 MEMBER_SEQ도 저장되고, 'call next value for MEMBER_SEQ' 를 호출할 때 마다 같이 수정된다고 보면 되나요?

답변 1

답변을 작성해보세요.

1

codesweaver님의 프로필

codesweaver

2023.08.16

안녕하세요. 나무님, 공식 서포터즈 코즈위버입니다.

추측하신 내용이 맞습니다. JPA는 allocationSize 만큼의 시퀀스를 미리 받아 이를 메모리에 저장합니다. 그리고 가지고 있는 값을 모두 소진하기 전까진 메모리에서 시퀀스 값을 찾아 사용합니다. 그리고 부족하면 다시 데이터베이스에서 시퀀스를 한 번에 받아옵니다.

만약 시퀀스를 모두 소진하기 전에 어플리케이션이 종료될 경우, 나머지 시퀀스는 사라지며 다시 사용할 수 없는 상태가 됩니다. 가령 1-50번까지의 시퀀스 중 10번까지 사용하고 11-50번은 사용하지 않은 상태로 어플리케이션을 종료하고 다시 시작하면, 51번 시퀀스 부터 시작하게 됩니다.

감사합니다.