2

GAE Java를 사용하여 웹 응용 프로그램을 작성합니다. 나는 기본 키로 긴 ID (appengine에 의해 생성 된)를 사용하는 클래스를 가지고있다.GAE Java의 기존 객체에 대한 기본 키를 업데이트해야합니다. Java

이제이 원본 클래스에 대한 부모 클래스가 될 새로운 클래스를 만들려고합니다. (일대 다 관계) 그러나 자식은 "긴"ID가 아닌 "키"유형의 기본 키를 가져야합니다. 지금.

기본 유지 키를 기존 영구 보존 엔티티 대신 long 키가 아닌 "키"유형으로 변경하는 가장 좋은 방법은 무엇입니까? "key"유형의 기본 키를 사용하여 새 클래스를 만들고 이전 필드 값을 복사하는 새 객체를 인스턴스화하고 유지해야합니까? 또는 어떻게 든 기존 클래스를 업데이트 할 수 있습니까?

감사

사실

답변

3

는 지속 엔티티의 키는 불변의 것으로 간주됩니다. 키를 변경하면은 의심의 여지없이 사용 된 인스턴스를 변경하는 것과 같습니다. 부모님의 자녀에게 초기 객체를 연결하는 것이 좋습니다.

0

부모 클래스의 목록에 기존 긴 ID를 저장할 수 있습니다. 그러면 필요한 일대 다 상위 - 하위 관계가 만들어집니다.

귀하의 사이트가 트래픽이 많지 않은 경우에는 그리 어렵지 않을 수 있지만 귀하는 일관성을 관리해야하며 상위 및 하위 클래스는 동일한 엔티티 그룹에 속하지 않습니다 (거래에 대한 의미) .

키를 변경하면 엔터티 자체 (및 엔터티 그룹)가 변경됩니다.

궁극적으로 사용자에게 적합한 솔루션은 문제의 특성에 따라 달라집니다. 예를 들어 이미 많은 기존 데이터가 있습니까? 이 앱이 실시간 애플리케이션입니까 (즉 이미 사용중인 앱인가요?)?

다른 솔루션은 다른 (더 적합한) 데이터 모델로 앱을 마이그레이션하고 잠깐 계정을 잠그면 계정별로 계정을 생성하는 것입니다. 이렇게하면 전체 앱이 다운되기보다는 (계정을 이전 할 때 앱에 액세스하는 경우) 소수의 개인 만이 변경 사항의 영향을받습니다.