难道是我没有表述清楚?呵呵
我现在对你的模型的理解是。你现在想用一个动态的表来存储数据。比如:
2007年1月份就是200701,2月份就是200702.每过一个月就新增加一个表。之后就仅对这个表进行处理。之后这个月过完就在新加一个表比如200703。现在你这里的问题是:hibernate映射的表是固定的,如果变换了表其实体也就变化了。所以相对与你那里来说就应该是每个月都是一个实体。而你现在又需要将这个每个月的实体是唯一的一个来进行处理。所以现在出现问题。我对你的问题理解还算正确吗?
如果没有什么偏差的话。我的意思是:首先在hibernate中一个实体确实仅对应一个表。若想动态生成实体类和映射文件可能通过泛类和jpa标记可能能够实现(我没有试过,只是你提出这个问题之后我的一个粗略考虑)。我的建议是:对于表的备份还是自己用代码去实现。也就是说你所操作的实体(表)是不变的,而是在每个月末的时候将这个月的数据复制进入一个新建的表(比如200703)。这样的备份方法不需要进行映射。不会改变你的领域模型结构。而进行新建表的操作应该是在你的业务层实现的。因为在持久层你是无法进行这样的操作的。

解决方案 »

  1.   

    另:如果顺着你的那种思路进行实现的话可以自己去控制dom4j去改写.hbm.xml文件。
    但是你的这种备份业务功能的设计我确实从来没有见过~~~孤陋寡闻了,呵呵
      

  2.   

    貌似添加新表不实际啊,加载新表很耗资源甚至需要restart服务,哪个服务器可以一会好使一会不好使的......
    至于数据量大,多大算大啊?一般觉得大的,几乎小型数据库都能承受了....
    当然,一个月一张表,十二个月十二张表,肯定可以实现,但是,不实际,不如研究下数据关系,好好设计下数据库更合理.....
      

  3.   

    pizzame 单表备份的方法我也很赞同,恩恩,而且生成新表,对于查询也会带来极大的不方便,因为还要适时的转换表的对应.........
      

  4.   

    利用boss系统管理后台的解决办法,通过存储过程生成 报表(日,月,年), 以图表或文件的形式保存在本地或远程,这样既不影响数据库,
    也不影响Hibernate动态生成hbm.xml文件
      

  5.   

    放了个假回来看到大家这么热心~~感动无限!
    pizzame的“通过泛类和jpa标记”的方法没研究过,有机会的话拿出来大家一起鉴赏一下;还有重写hbm.xml的方法也考虑过,还有每月生成一张新表都可能在月交接处产生异常。另外此数据库是多系统共用,最终还是决定直接生成12张表,在程序中判断进行日志备份。谢谢大家