公司新项目,一个大型平台.公司打算做成通用的,也就是业务是一样的,只是使用的客户不一样.现在关键的难点就是解决动态问题.比如说法院和检查院都使用这套系统,但是他们两者之间的表字段个数是不一样的.现在我们决定是法院一个数据库,检查院一个数据库.业务是一样的.表的字段数不一样,就实体类属性个数不一样.从而前台显示的数据也就不一样.我怎么样才能做到动态的呢?今天讨论打算用freeer模板技术来动态创建JAVA,HTML,JS.是否还有更好的办法,可以不用这种技术,或者不用一个单位一个数据库来做呢?大家提供点经验吧.不懂业务,我可以再说清点,谢谢各位

解决方案 »

  1.   

    类似的问题遇到过,想法如下:关于db:
    用a表的存需要表的名字,用b表存需要表的各个字段的名字和各种约束(如非空约束)。这样通过ab关联可以得到需要表的具体信息,这样就把先前的物理表抽象成逻辑表了,可以通过你的app随时修改;换句话说这样作的目的是使随时变化的字段的修改变成业务的一部分。当然,这样做尽管你的db信息和你的app的加深了耦合性,但这是出于你的需求。至于db里的纪录,需要一个逻辑表就加一个,不过字段需要抽象出来。你可以参考一下数据仓库思想关于你ui变化的问题:
    也可以通过将画面上东西存到db里后,在不同的情况下按照不同的需要取出就可以了。可以参考刚才提到的关于db的思想以上的缺点是:db设计相当复杂,但有了现在的orm技术,我想对于coding来说这是个不是问题的问题。还有就是你的业务和db的耦合性太强,对于日后的移植造成了困难,但这也是没有办法的。如有问题请加qq:387752961,大家共同讨论
      

  2.   

    我现在做的项目也是这样一个情况,我们是把公用的功能提取了出来,做了一个core系统(也可以叫平台),这个系统是由一些最基本的类(EJB)组成,然后把这个core系统打成Jar包,作为工具库使用, 开发不同用户的系统的时候,如果可以用core系统的功能,就直接使用,不能直接使用的时候就继承core系统的类,重载或者重写core系统的方法。
    关于数据库设计,我们也是把一些公用的表和字段那出来作为母表,然后在分别给不同的用户设计不同的表作为子表(其实是单独的表,不过在pojo层是继承关系)
      

  3.   

    将common搞出来,打成jar 文件呀
      在用的时候就用
      

  4.   

    4楼说的好基本上我也是这么想的
    我也遇到过,通常自己定义了数据字典来解决
    table_list  记录着系统需要的哪个表
    table_info  记录着表的字段和关系然后自己写个应用来维护这个两个表,基本上就针对这表做程序处理
    可以帮你实现通用的需求,当然系统大了就比较复杂了