难道是我没有表述清楚?呵呵
我现在对你的模型的理解是。你现在想用一个动态的表来存储数据。比如:
2007年1月份就是200701,2月份就是200702.每过一个月就新增加一个表。之后就仅对这个表进行处理。之后这个月过完就在新加一个表比如200703。现在你这里的问题是:hibernate映射的表是固定的,如果变换了表其实体也就变化了。所以相对与你那里来说就应该是每个月都是一个实体。而你现在又需要将这个每个月的实体是唯一的一个来进行处理。所以现在出现问题。我对你的问题理解还算正确吗?
如果没有什么偏差的话。我的意思是:首先在hibernate中一个实体确实仅对应一个表。若想动态生成实体类和映射文件可能通过泛类和jpa标记可能能够实现(我没有试过,只是你提出这个问题之后我的一个粗略考虑)。我的建议是:对于表的备份还是自己用代码去实现。也就是说你所操作的实体(表)是不变的,而是在每个月末的时候将这个月的数据复制进入一个新建的表(比如200703)。这样的备份方法不需要进行映射。不会改变你的领域模型结构。而进行新建表的操作应该是在你的业务层实现的。因为在持久层你是无法进行这样的操作的。
我现在对你的模型的理解是。你现在想用一个动态的表来存储数据。比如:
2007年1月份就是200701,2月份就是200702.每过一个月就新增加一个表。之后就仅对这个表进行处理。之后这个月过完就在新加一个表比如200703。现在你这里的问题是:hibernate映射的表是固定的,如果变换了表其实体也就变化了。所以相对与你那里来说就应该是每个月都是一个实体。而你现在又需要将这个每个月的实体是唯一的一个来进行处理。所以现在出现问题。我对你的问题理解还算正确吗?
如果没有什么偏差的话。我的意思是:首先在hibernate中一个实体确实仅对应一个表。若想动态生成实体类和映射文件可能通过泛类和jpa标记可能能够实现(我没有试过,只是你提出这个问题之后我的一个粗略考虑)。我的建议是:对于表的备份还是自己用代码去实现。也就是说你所操作的实体(表)是不变的,而是在每个月末的时候将这个月的数据复制进入一个新建的表(比如200703)。这样的备份方法不需要进行映射。不会改变你的领域模型结构。而进行新建表的操作应该是在你的业务层实现的。因为在持久层你是无法进行这样的操作的。
但是你的这种备份业务功能的设计我确实从来没有见过~~~孤陋寡闻了,呵呵
至于数据量大,多大算大啊?一般觉得大的,几乎小型数据库都能承受了....
当然,一个月一张表,十二个月十二张表,肯定可以实现,但是,不实际,不如研究下数据关系,好好设计下数据库更合理.....
也不影响Hibernate动态生成hbm.xml文件
pizzame的“通过泛类和jpa标记”的方法没研究过,有机会的话拿出来大家一起鉴赏一下;还有重写hbm.xml的方法也考虑过,还有每月生成一张新表都可能在月交接处产生异常。另外此数据库是多系统共用,最终还是决定直接生成12张表,在程序中判断进行日志备份。谢谢大家