当前位置:  开发笔记 > 编程语言 > 正文

保留适合枚举的数据

如何解决《保留适合枚举的数据》经验,为你挑选了1个好方法。

大多数项目都有某种数据,这些数据在发行版之间基本上是静态的,非常适合用作枚举,如状态,事务类型,错误代码等.例如,我只使用一个公共状态枚举:

public enum Status {
    ACTIVE(10, "Active");
    EXPIRED(11, "Expired");
    /* other statuses... */

    /* constructors, getters, etc. */
}

我想知道其他人在这些数据的持久性方面做了些什么.我看到了一些选项,每个选项都有一些明显的优点和缺点:

在状态表中保留可能的状态,并保留所有可能的状态域对象,以便在整个应用程序中使用

只使用枚举,不要保留可用状态列表,在我和我的DBA之间创建数据一致性圣战

保持状态并在代码中维护枚举,但不要将它们绑定在一起,从而创建重复的数据

我的偏好是第二种选择,虽然我的DBA声称我们的最终用户可能想要访问原始数据来生成报告,而不是持久化状态会导致数据模型不完整(反驳:这可以通过文档解决) .

大多数人在这里使用会议吗?人们对每个人的经历是什么,还有其他选择吗?

编辑:

在考虑了一段时间之后,我真正的持久性斗争来自于处理与数据库中的状态相关联的id值.安装应用程序时,这些值将作为默认数据插入.此时,它们具有可用作其他表中的外键的ID.我觉得我的代码需要知道这些ID,以便我可以轻松检索状态对象并将它们分配给其他对象.我该怎么办?我可以添加另一个字段,比如"代码",查看内容,或者只是按名称查找状态,这是icky.



1> Jason Cohen..:

我们使用数据库中的一些显式字符串或字符值存储枚举值.然后从数据库值返回到枚举,我们在枚举类上编写一个静态方法来迭代并找到正确的方法.

如果您期望有很多枚举值,则可以创建静态映射HashMap以快速转换.

不要存储实际的枚举名称(即示例中的"ACTIVE"),因为开发人员很容易重构.


想知道您在数据库中存储的"ACTIVE"以外的显式字符串或字符值.
推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有