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 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)