2016-08-29 5 views
0

메인 프레임을 java로 마이그레이션하려고합니다. DB2에 하나의 테이블이 있습니다. 이 테이블을 Gemfire의 한 영역으로 복제하려고합니다. 이 작업을 수행하는 동안 해당 테이블에 대한 기본 기본 키가 있습니다. 테이블을 gemfire 영역으로 복제합니다. 나는 지역을위한 복합 기본 키를 만들고 싶다. 그저 지역에서 복합 기본 키를 만들 수있는 가능성이 있는지 알고 싶습니다.Gemfire 지역에서 합성 기본 키 시나리오를 만드는 방법은 무엇입니까?

답변

1

키/값 쌍이 영역에 "넣어"진 후에도 값이 변경되지 않는 키를 만드는 것이 이상적입니다. GemFire ​​/ Geode Region은 java.util.Map (그리고 정확하게는 HashMap)의 영광스러운 버전입니다.

즉, "합성"키는 Region 값 자체의 속성 값을 기반으로해서는 안됩니다. 예를 들면, ... 나는 값 Customer과 같이 정의를

class Customer { 

    Long accountNumber; 

    Gender gender; 

    LocalDate birthDate; 

    String firstName; 
    String lastName; 

    ... 
} 

다음과 같이 키를 생성하는 것이 권할 것 ...

class CustomerKey { 

    LocalDate birthDate; 

    String firstName; 
    String lastName; 

} 

을 상상하는 동안 사람의 생년월일 성 및 필드 이름이 일반적으로 누군가를 고유하게 식별하기에 충분하면 이러한 개별 속성/필드 값 중 하나라도 변경되면 Java Map의 본질적인 동작을 감안할 때 페어링을 잃게됩니다 (주의하십시오).

또한 사용자가 작성한 모든 "사용자 정의/합성"키 클래스에 대해 equals/hashCode 메소드를 신중하게 작성해야합니다.

일반적으로 내제 (응용 프로그램에만 알려진) 스칼라 유형을 키에 사용하는 것이 좋습니다 (예 : Long 또는 String입니다.

class Customer { 

    Long id; 

    ... 

} 

대부분의 시간을

, 당신의 (OQL) 쿼리 조건이 개인의 가치를 기반으로이 그렇게 같은 Customer 클래스에 속성/필드를 추가하는 것처럼 간단 할 것

... 도메인 개체 속성/필드가 아니라 키. 키가 String가 있다면 예를 들어 ...

또한, 당신은 고유 한 값을 생성하는 UUID 클래스를 사용할 수 있습니다. 그렇지 않으면 자신 만의 독특한 키 생성 전략을 수립해야합니다.

요약하면 Java에서주의 깊게 만들어진 클래스 유형을 사용하면 요청하는 것이 가능하지만 일반적으로 권장되지 않습니다. 단순한 스칼라 유형을 선호합니다.

여기에 일반적으로 염두에 두어야 할 사항이 있으니 여기에 link이 있습니다.

희망이 도움이됩니다.

-john

+0

예 존, 맞습니다. 귀하의 조언에 따라, 나는 복합 기본 키를 성공적으로 구현했습니다. 단, serialization 및 역 직렬화를 위해 gemfire 서버에 복합 기본 키 POJO의 jar를 배포해야합니다. 존 감사합니다. –