`

关于用户自定义字段

阅读更多

     最近工作上遇到了这样一个问题,就是关于系统用户可对系统预置管理对象进行属性的自定义。在数据库中的体现就是用户可以追加字段。

      为此看了不少相关的资料,发现遇到这一问题的人不在少数,但可供参考的解决方案却不是很多。其实包括很多比我资深的师兄师长们都对这一需求是抵触的,认为这是一个不可接受需求,认为能有这样的需求,完全是在需求的分析上做的不够彻底。他们这样的一些看法我本人也是赞同的。但有时我们也不得不承认这样的需求在某种情况下的存在是有其理由的。就拿我们公司的情况来说,一个系统的后台管理,比如说注册用户的管理,你可以尽量地为用户考虑周全,预置很多的属性,但怎么做,也不可以满足所有用户的需求,有的用户需要手机号,有的需要工作证件号码,有的是多个邮箱等等。所以在这增加一个用户自定义的功能是很必要的。

      对于这个问题的解决,我在看过相关资料后,发现主要有以下三种方案:

      1)系统的数据库操作使用JDBC的方式,在POJO中,用一个MAP来对增加的字段进行操作。在这个思路的基础上,可以考虑整个POJO的对象里,只有一个MAP,它来保存所有字段名称和值。

      2)上面那种是不采用ORM的方式,采用ORM的好处我想不必多说,而我最看重的就是它对跨数据库的良好支持。我这里只说说HIBERNATE,HIBERNATE已经有了动态加裁新增字段的功能。缺点是实现起来比较麻烦,还有就是它是通过MAP得到新增字段的值的,在考虑到与页面显示,与STRUTS的结合并不好实现。

      3)就是预留一个TEXT的字段,然后,用"符号"区分,将区分的内容,和列名:值写出来,最后显示的时候用Split进行分开。

     我最后是采用了第三次方式,其实在这也只是大概的提一下,给正遇到该问题的人提供一些参考,具体的实现在这就不提了。哪位大侠有更好的方案,欢迎赐教!

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics