- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在致力于将大型机迁移到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 使用内部(仅应用程序知道)标量类型,例如Long
或String
.
这就像将属性/字段添加到 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/
我是一名优秀的程序员,十分优秀!