VeryZero
V2EX  ›  Java

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

  •  
  •   VeryZero · Jan 11, 2019 · 3843 views
    This topic created in 2694 days ago, the information mentioned may be changed or developed.
    之前一直用整型保存订单状态之类的字段,好像别人也都是这么干的。但是 mysql 有 enum 字段啊,不管从可读性还是维护性上来说都比整型强吧,为什么用的不多呢,是里面有什么坑吗?
    8 replies    2019-01-11 15:39:43 +08:00
    cyspy
        1
    cyspy  
       Jan 11, 2019
    想加一种订单状态时就想哭了
    VeryZero
        2
    VeryZero  
    OP
       Jan 11, 2019
    @cyspy 不应该啊,改下表结构不就行了?
    DovaKeen
        3
    DovaKeen  
       Jan 11, 2019
    @VeryZero 生产中改表结构会不会很麻烦
    VeryZero
        4
    VeryZero  
    OP
       Jan 11, 2019
    @DovaKeen 一个项目上线以后,表结构不可能一直不变吧,总有新需求需要新增或者修改字段的。这个理由有点牵强啊。
    hihipp
        5
    hihipp  
       Jan 11, 2019
    如果 Java 部分是提供 SDK 那种,新增订单状态,没更新 SDK 正在跑得程序就要哭了。
    debugjoker
        6
    debugjoker  
       Jan 11, 2019
    可参考同样的问题 /t/233301
    helone
        7
    helone  
       Jan 11, 2019   ❤️ 1
    在大部分公司中,更改表结构都是一个很麻烦的事情,添加新表、添加新字段这些都还好,更改现有字段结构及删除字段在我待过的公司都是明令禁止的操作,尤其是在一些运维比较完善的公司,除非你有充分的理由且有权限的人批准

    所以就越来越少人用 enum,正如一楼提到的,如果要添加一种订单状态,你需要改表结构(部分大公司不一定行得通),还需要改代码,明明用 tinyint 改下代码就可以跑了,非要强行增加难度,而且这个难度对性能基本没提升,干嘛要这样?
    gaius
        8
    gaius  
       Jan 11, 2019
    改表可能就不是你一个应用要重启
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5358 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 55ms · UTC 07:02 · PVG 15:02 · LAX 00:02 · JFK 03:02
    ♥ Do have faith in what you're doing.