강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của cauchty944495
cauchty944495

câu hỏi đã được viết

Lập trình JPA tiêu chuẩn Java ORM - Cơ bản

Ánh xạ phím mặc định

GenerationType.SEQUENCE 전략

Đã giải quyết

Viết

·

472

2

  • - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
  • - 먼저 유사한 질문이 있었는지 검색해보세요.
  • - 서로 예의를 지키며 존중하는 문화를 만들어가요.
  • - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

 

그 GenerationType.SEQUENCE 전략 일때 allocationSize를 지정하면 DB에 key값(id)을 얻기위해 디비에 매번 쿼리를 날리는게 아닌 일정 개수마다 쿼리를 날리기에 최적화가 된다고 하셨고, 그 원리는 메모리를 이용하기 떄문이다라고 하셨습니다.

(질문1) 여기서 만약에 어플리케이션이 이중화가 되어있으면, 메모리를 이용한 key값(id) 설정이 조금 이상해질것 같기도한데, 이 부분에 대해서 이상이 없나요?

(질문2) 이상이 없다면, 어떻게 처리하는지 알 수 있을까요?

 

 

JPAjava

Câu trả lời 2

3

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

sequence 전략을 사용하면

1. DB의 시퀀스를 일정 수치만큼 증가시키고, 증가된 범위를 가져와서 시퀀스로 사용합니다.

즉, A가 최초로 시퀀스를 가져오게 되면 1~50까지의 범위의 시퀀스를 얻게 되며, DB의 시퀀스를 50이 증가되어 그 다음 시퀀스를 얻게 된다면 51부터 얻게 될 것입니다.

2. 다른 애플리케이션에서 동일한 시퀀스를 바라보고 있고 시퀀스를 A와 동일하게 범위로 얻어간다면 51부터 얻어가게 될 것이고 1번에서 말한 것과 같이 일정 수치만큼 증가시키고 증가된 범위를 가져와서 시퀀스로 사용합니다.

각 시퀀스를 다 쓰게 된다면 다시 DB에 시퀀스(일정 범위)를 얻어 오게 될 것입니다.

감사합니다.

 

좋은 답변 덕분에 궁금증이 풀렸습니다.

좋은 답변 덕분에 하나 궁금증이 생겼는데요. 만약 A에서 1~5까지 쓰고 B에서도 51~55까지만 id로 사용했다면 6~50, 55~100은 못쓰는 영역이 되는 걸까요?

아니면 6~50+56~60을 사용하여 50만큼의 공간을 또 쓸 수 있을까요?

위 부분은 생각해본 적이 없는데, 시퀀스는 마지막 값을 기억하고 있어서 중간 값은 못 쓰지 않을까요?

0

cauchty944495님의 프로필 이미지
cauchty944495
Người đặt câu hỏi

답변 감사합니다. key(id)는 데이터 구별을 위한 값이지 데이터 순서도 기억해야한다고 착각했었습니다. 답변 감사드립니다

Hình ảnh hồ sơ của cauchty944495
cauchty944495

câu hỏi đã được viết

Đặt câu hỏi