V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
VeryZero
V2EX  ›  Java

Java 中的枚举类型和 mysql 的 enum 配合用来存储状态字段,有什么优缺点?

  •  
  •   VeryZero · 2019-01-11 14:55:39 +08:00 · 3316 次点击
    这是一个创建于 2144 天前的主题,其中的信息可能已经有所发展或是发生改变。
    之前一直用整型保存订单状态之类的字段,好像别人也都是这么干的。但是 mysql 有 enum 字段啊,不管从可读性还是维护性上来说都比整型强吧,为什么用的不多呢,是里面有什么坑吗?
    8 条回复    2019-01-11 15:39:43 +08:00
    cyspy
        1
    cyspy  
       2019-01-11 15:01:10 +08:00
    想加一种订单状态时就想哭了
    VeryZero
        2
    VeryZero  
    OP
       2019-01-11 15:05:40 +08:00
    @cyspy 不应该啊,改下表结构不就行了?
    DovaKeen
        3
    DovaKeen  
       2019-01-11 15:10:38 +08:00
    @VeryZero 生产中改表结构会不会很麻烦
    VeryZero
        4
    VeryZero  
    OP
       2019-01-11 15:13:43 +08:00
    @DovaKeen 一个项目上线以后,表结构不可能一直不变吧,总有新需求需要新增或者修改字段的。这个理由有点牵强啊。
    hihipp
        5
    hihipp  
       2019-01-11 15:16:50 +08:00
    如果 Java 部分是提供 SDK 那种,新增订单状态,没更新 SDK 正在跑得程序就要哭了。
    debugjoker
        6
    debugjoker  
       2019-01-11 15:30:33 +08:00
    可参考同样的问题 /t/233301
    helone
        7
    helone  
       2019-01-11 15:39:36 +08:00   ❤️ 1
    在大部分公司中,更改表结构都是一个很麻烦的事情,添加新表、添加新字段这些都还好,更改现有字段结构及删除字段在我待过的公司都是明令禁止的操作,尤其是在一些运维比较完善的公司,除非你有充分的理由且有权限的人批准

    所以就越来越少人用 enum,正如一楼提到的,如果要添加一种订单状态,你需要改表结构(部分大公司不一定行得通),还需要改代码,明明用 tinyint 改下代码就可以跑了,非要强行增加难度,而且这个难度对性能基本没提升,干嘛要这样?
    gaius
        8
    gaius  
       2019-01-11 15:39:43 +08:00
    改表可能就不是你一个应用要重启
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2971 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 12:48 · PVG 20:48 · LAX 04:48 · JFK 07:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.