我应该将Type存储在数据库中还是应该将其存储在枚举中?

时间:2015-12-03 06:35:37

标签: java database spring hibernate uml

例如,我有一个表名Fruit,每个水果都属于FruitType。我应该将FruitType存储在数据库中,然后在Fruit中创建一个外键,或者只将参考ID存储到Enum名称FruitType

更新:
该数据库仅用于一个应用程序。我需要向用户显示fruit包括他们的fruit type的表。我还在水果表视图中使用type作为过滤器。

我目前的解决方案:
Enum总是Type。但 如果Type提供的信息不仅仅是idname,而是description ...我还会将其存储在数据库中,以便我可以使用参考视图来显示所有{ {1}}信息。其他明智的只是Type

2 个答案:

答案 0 :(得分:3)

您必须使用数据库来保存FruitType。我将用两种方式解释为'FruitType'实现枚举。我以为你正在使用javax.persistance

enum FruitType {
 YELLOW,GREEN,RED;
}

class Fruit{
 private String name;
 @Enumerated(EnumType.ORDINAL) or @Enumerated(EnumType.STRING)
 private FruitType fruitType;
}

如果您使用EnumType.STRING,则保存枚举的字符串名称(黄色,红色)。对于EnumType.ORDINAL保存顺序,如1,2等。

如果您计划处理(添加,更新和删除)许多FruitTypes,那么请使用另一个表来保存数据。

答案 1 :(得分:1)

如果您的类型是静态的,并且您不想在应用工作时间添加它们,那么最好使用枚举。如果真的有很多类型或者可以在飞行中添加/更改类型,最好将它们存储在单独的数据库表中并设置关系。