Java 创建只有ID属性的实体表有意义吗?
当单个实体只应包含Java 创建只有ID属性的实体表有意义吗?,java,database,hibernate,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作为stringvalue,而不
@Id
值作为字符串时,创建单个实体有意义吗
@Entity
class CountryCode {
@Id
String letterCode; //GBR, FRA, etc
}
@Entity
class Payment {
CountryCode code;
// or directly without further table: String countryCode;
}
或者您是否只使用letterCode作为stringvalue,而不是创建CountryCode
实体
例如,以后应该可以获取包含特定国家代码的所有付款。这两种解决方案都可能实现。但是哪一个更好(为什么)?是的,如果将实体用作查找,则可以。在您的示例中,您可能需要为字母代码添加一列“说明”(法国、英国等)和第三列(无论其是否处于活动状态),还可能需要为插入时间和上次更改时间添加列。如果将实体用作查找,则可以添加。在您的示例中,您可能希望为字母代码添加一列描述congaing(法国、英国等),以及第三列,无论其是否处于活动状态,也可能为插入时间和上次更改时间添加列。创建此类表以提供数据一致性是有意义的,也就是说,不使用不存在的
CountryCode
创建任何付款。在Payment
上使用单独的实体(即表)和外键可以检查数据库中的一致性
另一种可能的方法是在代码字段上设置check约束,但如果添加/删除代码和/或存在多个此类列,则很容易出错 创建这样的表以提供数据的一致性是有意义的,即不使用不存在的CountryCode
创建任何Payment
。在Payment
上使用单独的实体(即表)和外键可以检查数据库中的一致性
另一种可能的方法是在代码字段上设置check约束,但如果添加/删除代码和/或存在多个此类列,则很容易出错 添加lettcode
作为字符串属性的Payment
类(或防止键入错误的枚举)将提高获取性能,因为您不需要在CountryCode
表上创建联接 添加lettcode
作为字符串属性的Payment
类(或防止键入错误的枚举)将提高获取性能,因为您不需要在CountryCode
表上创建联接