2008-10-08 3 views
1

우리는 Webapp에 Spring + Hibernate를 사용합니다.봄 + 최대 절전 모드 : 구성 가능한 PK 생성기를 갖는 방법?

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

내가해야 할 일은이 두 무관 한 제작 사이트에서 생성 된 개인이 모두 서로 다른 PK를 가지고 있는지 확인하여 언제든지이 두 사이트의 개인 데이터를 병합 할 수 있도록하는 것입니다.

나에게 부과 된 추가 제약 사항은 이러한 PK가 Long에 들어 맞으므로 UUID를 사용할 수 없다는 것입니다. PERSON_ID는 PK와는 S_PERSON_1 아마 (다른 시퀀스에서 생성 한 있도록 구성 무언가에

<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> 

:

는 난 할 노력하고있어 발전기로 순서 S_PERSON을 가지고 현재 최대 절전 모드 매핑을 변경하는 것입니다 및 S_PERSON_2)을 배포 사이트의 Spring 구성 파일에 따라 다릅니다. 물론

,

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

작동하지 않는, 그래서 다른 뭔가를 파악해야 ... 내 발전기 턴 포인트의 시퀀스 또는 다른 구성 콩을 가리켜 야 것 같아요, 하지만 어떻게 그 방법을 생각할 수 없다 ...

어떤 아이디어 또는 해결 방법?

감사합니다.

답변

2

당신은 모두 생산 시스템에 시퀀스를 사용할 수 있지만 다르게 정의

생산 시스템 1 : 2 1 명 INCREMENT 시작 sequence_name SEQUENCE를 생성;

생산 시스템 2 : CREATE SEQUENCE sequence_name START WITH 2 INCREMENT BY 2;

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

+0

네, 내 현재 옵션처럼 뭔가를 데이터베이스

당 정상적인 순서를 정의 할 수 있어야합니다. 이 솔루션의 문제점은 배포 단계를 추가한다는 것입니다. 내가 정말로하고 싶은 것은 두 개의 서로 다른 시퀀스를 가지며 기존의 Spring conf 파일에서 시퀀스 1 또는 시퀀스 2를 가리 키도록 매핑을 구성하는 것입니다. –

0

기본적으로 키 값이 다른 세트에 속하는지 확인해야합니다. 따라서 시스템 식별자로 varchar를 추가합니다.

참고 :이 테스트 havent 한하지만 당신은

insert VALUES('Sys1' || to_char(sequence.nextval), val1, val2, val3); 
insert VALUES('Sys2' || to_char(sequence.nextval), val1, val2, val3); 
관련 문제