创建仅具有ID属性的实体表是否有意义?

时间:2013-11-05 11:40:24

标签: java database hibernate

当它只包含@Id值作为字符串时,创建单个实体是否有意义?

@Entity
class CountryCode {
   @Id
   String letterCode; //GBR, FRA, etc
}

@Entity
class Payment {
   CountryCode code;
   // or directly without further table: String countryCode;
}

或者您是否只使用letterCode作为字符串值而不是创建CountryCode实体?

稍后可以获取包含特定国家/地区代码的所有付款。这两种解决方案都可能实现。但哪个更好(为什么)?

3 个答案:

答案 0 :(得分:3)

是的,如果您将实体用作查找,则可以。在您的示例中,您可能希望为字母代码和第三列添加描述congaing(法国,英国等)的列,无论它是否处于活动状态,以及插入时和上次更改时的列。

答案 1 :(得分:1)

创建此类表以提供数据的一致性是有意义的,即不使用不存在的Payment创建CountryCode。在Payment上有一个单独的实体(即表)和外键,可以检查数据库的一致性。

另一种可能的方法是对代码字段进行检查约束,但如果添加/删除代码和/或存在多个此类型的列,则这很容易出错。

答案 2 :(得分:1)

letterCodePayment类添加为字符串属性(或枚举以防止拼写错误)将提高获取性能,因为您不需要在CountryCode上创建联接表。