如题:数据库维护了一套数据字典表,java 系统里面为了避免 ‘魔法值’ 也会有一套枚举。那么如何同步数据库里面的字典表数据和程序里面的枚举属性?
例如
SEX{
MALE ( 1 ),
FEMALE(2)
}
数据库
classCode code value
SEX 1 男
SEX 2 女
当数据库新增 code 3 雌雄同体, 怎么维护程序里面的枚举?(或者有没有不适用枚举的其它方式维护?)
如题:数据库维护了一套数据字典表,java 系统里面为了避免 ‘魔法值’ 也会有一套枚举。那么如何同步数据库里面的字典表数据和程序里面的枚举属性?
例如
SEX{
MALE ( 1 ),
FEMALE(2)
}
数据库
classCode code value
SEX 1 男
SEX 2 女
当数据库新增 code 3 雌雄同体, 怎么维护程序里面的枚举?(或者有没有不适用枚举的其它方式维护?)
|
wellCh4nOct 15, 2019
1
mark 一下,有同样的疑问
|
|
phx13yeOct 15, 2019
2
你 INSERT 的时候不经过程序吗,不需要多加一个枚举?
|
|
gz911122Oct 15, 2019
3
写好文档..
尤其是上线评审之类的,可以一定程度上解决这个问题 |
|
justseemoreOct 15, 2019
4
comment 解析呗 |
|
wanacryOct 15, 2019
5
为啥不直接查库缓存起来
|
|
airflingOct 15, 2019
6
hibernat @Enumerated 用这个注解
|
|
Jrue0011Oct 15, 2019
7
感觉可以写个类似 mybatis generator 或者 lombok 的工具?数据库表多加一个枚举名称字段,新增记录的时候指定枚举名称,然后工具查询生成对应枚举类.java 或者.class 文件。。。
就是会比较麻烦。。。少的话还不如手动加枚举。。。 |
|
jaryurOct 15, 2019 via Android
8
如果业务比较独立或者拆分边界清晰就放各自的枚举里面,而且需要放到专门的 jar 包里面维护,如果是复杂的字典可以基础服务暴露出来,需要本地缓存就封装下就好
|
|
b0644170fcOct 15, 2019
9
我们公司以前也是这样的.有数据字典,有枚举类.当时我们是在枚举类里每新增一个枚举值,就必须执行下一个工具类,把数据插入到数据库中.这个工具类是怎么实现的,我当时也没看.
从使用的角度来看,这样非常麻烦.还不如定义一个中的枚举类.然后把相关的内容汇总到一起,定义枚举值然后还要和数据库关联起来,有点麻烦 |
|
mmdsunOct 15, 2019 via Android
10
我们写了有代码生成器,常量类都是从数据库生成的。
返回数据是写一个通用的转化器。例如,sex=1 这种数据,会动态增加一个字段 sex_cn=男 |
|
Raymon111111Oct 15, 2019
11
这个属于流程上的问题
一个方法是在技术方案 review 的模板里新增这一项, 不容易忘 |
|
12
数据库为什么不存枚举字符串名?这样就不用维护了
|
|
zhady009Oct 16, 2019 via iPhone
13
mybatis typehandler 枚举都实现一个 getCode 的接口来返回对应的枚举 数据库只存 code
|
|
zazaluOct 16, 2019
14
我能想到的就是写个脚本同步维护。。总之总要有一个“人”来维护这东西,要么人工,要么自动。
|
|
zifuirOct 16, 2019 via iPhone
15
存枚举字符串名,不用数据字典,好处是只用维护枚举类,坏处是维护就要改代码
|