gpt4 book ai didi

java - 如何在 Gemfire 区域创建复合主键场景?

转载 作者:行者123 更新时间:2023-12-01 09:33:27 24 4
gpt4 key购买 nike

我正在致力于将大型机迁移到java。我在 DB2 中有一张表。我正在将此表复制为 Gemfire 中的一个区域。在执行此操作时,我有该表的复合主键。将表复制到 gemfire 区域。我想为区域创建复合主键。我只是想知道,是否有可能在区域中创建复合主键?

最佳答案

理想情况下,您创建的键在键/值对“放入”区域后其值不会发生变化。 GemFire/Geode 区域只是 java.util.Map 的美化版本。 (准确地说是 HashMap)。

这意味着“复合”键不应基于 Region 值本身中的任何属性值。举例来说,假设我有一个值 Customer像这样定义...

class Customer {

Long accountNumber;

Gender gender;

LocalDate birthDate;

String firstName;
String lastName;

...
}

不建议像这样创建 key ......

class CustomerKey {

LocalDate birthDate;

String firstName;
String lastName;

}

虽然一个人的出生日期、名字和姓氏通常足以唯一地识别某人,但如果这些单独的属性/字段值中的任何一个发生变化,那么考虑到 Java Map 的固有行为,您就会失去配对。 (所以要小心)。

您还应该小心谨慎地制作 equals/hashCode您创建的任何“自定义/复合”键类的方法。

我通常建议您对 key 使用内部(仅应用程序知道)标量类型,例如LongString .

这就像将属性/字段添加到 Customer 一样简单像这样上课...

class Customer {

Long id;

...

}

大多数时候,您的 (OQL) 查询谓词基于各个域对象属性/字段的值,而不是键。例如...

SELECT c FROM /Customers c WHERE c.lastName = 'Doe'

此外,如果您的 key 是 String ,您可以使用UUID类来生成唯一值。否则,您将需要制定自己独特的 key 生成策略。

总之,虽然您所要求的问题在 Java 中精心设计的类类型中是可能的,但通常不建议这样做;更喜欢简单的标量类型。

这是一个link一些需要记住的一般事情。

希望这有帮助。

-约翰

关于java - 如何在 Gemfire 区域创建复合主键场景?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39202243/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com