在休眠中存储坐标 (x,y) 的首选方法是什么?



我正在创建一个服务,用户可以在其中存储一些坐标。(int x, int y)。

这些坐标是另一个对象的一部分,假设Person

class Person {
String name;
Coordinates coordinates;
}
class Coordinates {
int x;
int y;
}

Coordinates对象仅在一些上层上下文中是必需的 - 在此示例中它是Person,但有时它可以是PlaceCompany。仅Coordinates对象是完全无用的。

问题是:如何将这些数据存储在关系数据库中。我应该与生成的键创建关系,还是将其存储为大上层对象中的逗号分隔字符串?

什么是好的,推荐的方法?

问题是:如何将这些数据存储在关系数据库中。应该 我用生成的键创建关系,或者可能将其存储为 逗号分隔的字符串在上层对象内?

在 DBMS 方面,当您可以定义两个可以独立方式操作的概念时,将表拆分为两部分可能会很有趣。
这不是您的情况,因为您解释说仅坐标实体是完全无用的。

当两个概念混合了许多属性时,拆分它们之间没有直接关系,并且您不想将它们耦合到同一个表中,因为这在读取和可维护性方面是不可取的。情况
仍然不是这样,因为坐标只有两个属性。 例如,对于人员地址(一对一)关系,它会更有意义。

因此,为坐标引入特定的表格可能会带来更多的缺点而不是优点。

现在在 Java 对象方面,在 Person 类中有一个Coordinates字段是有意义的,因为您可以将其作为对象进行操作,而不仅仅是作为一组单独的属性进行操作。

JPA 的可嵌入和嵌入式机制允许将一个实体定义为另一个实体的一部分,同时将它们全部映射到单个物理表。

指定要作为可嵌入实体包含的实体,并在包含该实体的实体中将该字段指定为嵌入实体。

@Embeddable
class Coordinates{
int x;
int y;
}
@Entity
class Person{
String name;
@Embedded
Coordinates coordinates;
}

坐标对象本身是完全无用的。

从这一行你应该开始考虑可嵌入的,我也看不出一个对象如何重用超过一个地方,因为协调的微小差异会产生一个新的实例,

相关内容

最新更新