xml2map 2011-02-26 14:55
浏览 225
已采纳

Hibernate如何控制数据历史版本?

描述很长,请耐心看完。

一个项目曾经碰到过的需求,一个对象可能有多个版本,但当前只是用一个,有效历史版本都必须保留,用纯数据库方式和代码控制的。

上来问问大家有没有Hibernate,也就是面向对象设计上的方案。

案例如下,纯属虚构:

1、国家修改法规处罚标准,使得处罚标准和力度发生变化,

比如:仿冒知名品牌获利罪
1980年版,仿冒知名品牌获利1万以内,处以7~10年监禁;

1990年版,仿冒知名品牌获利10万以内,处以5~8年监禁;

2000年版,仿冒知名品牌获利20万以内,处以4~7年监禁,并处以双倍获利处罚;

2010年版,仿冒知名品牌获利50万以内,处以3~5年监禁,并处以双倍获利处罚;

2、具体犯罪记录

罪犯A,1986年发现其当年触犯仿冒知名品牌获利罪,适用1980年版;

罪犯B,1992年发现其1987年触犯仿冒知名品牌获利罪,适用1990年版;

罪犯C,2004年发现其1993年触犯仿冒知名品牌获利罪,适用2000年版,但超过追诉期10年,罚款但不监禁;

3、系统当前2011年,查询仿冒知名品牌获利罪时应显示2010年版,

但对不同罪犯历史记录查询时,要显示其犯罪时所适用版本标准,以及调查发现期所真正施行的版本标准;



补充:上述案例中,有很多种犯罪条款,每个犯罪条款都有不同的版本时间段、处罚条件和处罚标准。

请问各位,这种系统如何基于模型来设计,尤其适用Hibernate持久化时,如何设计基础模型?

谢谢!

 

  • 写回答

1条回答 默认 最新

  • iteye_1059 2011-02-26 23:35
    关注

    处罚条件和标准不统一的话, 很难用套到一个统一的模型里面. 业务逻缉简单还能应付过来, 随着业务逻缉越来越复杂, 附加在sql上面的逻缉越来越多, Schema冗余相信也越来越多. 这是违背使用Hibernate的初衷的~~~~那是自己找罪受了~~~~

    为避免了查询运行时再去分析适用条款的复杂性和潜在的性能问题, Criminal Record适当冗余判断结果, 把比对判断的业务逻缉放在Criminal Record导入之时为佳.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示