Spring

Spring + Hibernate : PK 생성기 구성?

기록만이살길 2021. 3. 6. 15:03
반응형

Spring + Hibernate : PK 생성기 구성?

1. 질문(문제점):

Webapp에 Spring + Hibernate를 사용합니다.

이 웹앱은 관련되지 않은 두 개의 프로덕션 사이트에 배포됩니다. 이 두 프로덕션 사이트는 Webapp을 사용하여 Person 데이터를 병렬로 생성하고 사용합니다.

내가해야 할 일은이 두 개의 관련없는 프로덕션 사이트에서 생성 된 Persons가 모두 별개의 PK를 가지고 있는지 확인하여 언제든지이 두 사이트의 Person 데이터를 병합 할 수 있도록하는 것입니다.

나에게 부과 된 추가 제약은 이러한 PK가 Long에 적합하므로 UUID를 사용할 수 없다는 것입니다.

내가하려는 것은 생성기로 시퀀스 S_PERSON을 가진 현재의 최대 절전 모드 매핑을 변경하는 것입니다.

<hibernate-mapping default-cascade="save-update" auto-import="false">
    <class name="com.some.domain.Person" abstract="true">
        <id name="id">
            <column name="PERSON_ID"/>
            <generator class="sequence">
                <param name="sequence">S_PERSON</param>
            </generator>
        </id>
    ...
</hibernate-mapping>

PERSON_ID는 배포 사이트의 Spring 구성 파일에 따라 다른 시퀀스 (S_PERSON_1 및 S_PERSON_2)에서 생성 된 PK를 갖도록 구성 할 수 있습니다.

물론이야,

        <generator class="sequence">
            <param name="sequence">${sequenceName}</param>
        </generator>

작동하지 않으므로 다른 것을 알아 내야합니다 ... 제 생성기가 시퀀스 또는 다른 시퀀스를 가리키는 구성 가능한 빈을 가리켜 야한다고 생각하지만 어떻게해야하는지 알 수 없습니다 ...

아이디어 나 해결 방법이 있습니까?

2. 해결방안:

두 프로덕션 시스템에서 시퀀스를 사용할 수 있지만 다르게 정의 할 수 있습니다.

생산 시스템 1 :

 CREATE SEQUENCE sequence_name START WITH 1 INCREMENT BY 2;

생산 시스템 2 :

 CREATE SEQUENCE sequence_name START WITH 2 INCREMENT BY 2;

첫 번째 시퀀스는 홀수 만 생성하고 두 번째 시퀀스는 짝수 만 생성합니다.

65740484
반응형