当字段较多且经常需要新增字段时,用 JSON 代替 POJO 是否更加合适?

2020-09-14 14:35:22 +08:00
 lauyukit
各位大佬们,小弟在重构一个项目,因为业务需要,一些 POJO 实体类有很多字段,而且随着时间和业务变化,会增加各种不同的字段,老代码里都是用 JSONObject 一把梭,我觉得这样很不好,一来没有辨识度,没法通过静态分析发现问题,二来很不优雅;可是定义 POJO 的话,又因为字段多变,可能需要成员变量里加一个 Map 来扩展,不然每新增一个字段就得通过继承或者定义新 POJO 来做了。不知道大佬们有没有更好的办法?
1939 次点击
所在节点    程序员
11 条回复
hyperbin
2020-09-14 15:07:19 +08:00
改成字段存数据库
freebird1994
2020-09-14 15:09:22 +08:00
我们现在是这样的。因为是 2b 的业务,平台方有些字段传入会有差异,差异的字段都是放在 map 里
qwerthhusn
2020-09-14 15:13:37 +08:00
有需要搜索,排序的字段得用单独的字段和单独的数据库列
其他的,尤其是后台基本上连看都不看直接扔前台的,可以弄到 extend_params 里面,json 就行
我是这么感觉
liuxey
2020-09-14 15:23:03 +08:00
我更好奇字段这么多变,数据库怎么设计? NoSQL ? JSON 列?
lauyukit
2020-09-14 17:21:53 +08:00
@qwerthhusn 那看来都是这么处理了
lauyukit
2020-09-14 17:22:21 +08:00
@freebird1994 嗯嗯,我也是这么想的,公共的提取出来,差异化的放 map 里
lauyukit
2020-09-14 17:22:58 +08:00
@liuxey 我目前想到的是 JSON 列,或者转 String
saulshao
2020-09-14 22:59:25 +08:00
我之前的方法都是弄个保存列名的表。
等到需要的列要大量查询的时候再把这个字段转到普通的表里面去。
srlp
2020-09-15 00:46:17 +08:00
protobuffer
Nillouise
2020-09-15 11:56:55 +08:00
用 map 存储说明你不会使用该字段进行逻辑处理,那么存在数据库的 json 字段应该是可以的。

涉及逻辑处理你当然得用一个 field 存储(数据库中需不要单独字段另说),多定义一个 pojo 不是什么大问题,因为不同得的逻辑层需要不同样的 vo 是很正常的。
lauyukit
2020-09-17 10:44:08 +08:00
@Nillouise 还是要逻辑处理的,我现在是打算根据父类的 type 来把对象转成子类去调用,但是数据库那边的表是按父类来设计,另外加一个 extra 字段,以 json 形式来存子类的成员

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/706872

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX