论坛首页 入门技术论坛

hibernate里分表insert或update该怎么操作呢?

浏览 5768 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-10-20  
比如:一个系统里有一张表的数据量很大,现在必须采用分表方式来做,也就是表结构都一样,只是表名不一样。

查询已经实现了,但是insert,update和 delete好像不好实现,网上搜索了下,也没有找到好的实现方式,望指点迷津

或者有什么方法能在SAVE或UPDATE前, 能动态改某个类的映射表名?谢谢
   发表时间:2007-10-20  
用jdbc来做,从session获取connection
0 请登录后投票
   发表时间:2007-10-22  
好变态的需求啊。。。。
一般这样的要求是把历史记录放在历史库中。。。
一但发现这个不是常用表的数据插入时插入常用表(insert不用改)
修改时,如果发现是在历史表中时,
用生成一个新的model将已知model的参数灌入新的model中来update
0 请登录后投票
   发表时间:2007-10-22  
抛出异常的爱 写道
好变态的需求啊。。。。
一般这样的要求是把历史记录放在历史库中。。。
一但发现这个不是常用表的数据插入时插入常用表(insert不用改)
修改时,如果发现是在历史表中时,
用生成一个新的model将已知model的参数灌入新的model中来update
这种需求应该比较多把。当数据量达到很大时(比如:几亿),都会面临这种需求。
0 请登录后投票
   发表时间:2007-10-22  
A表model            a
B表model A的历史表  b

如果有a要update
session.saveupdate(a)
之前先在B表查寻
session.get(B.class,a.id);
如果在B表中含有的话
把a的内容拷贝到b
beansutil.copy(a,b);
session.save(b);
0 请登录后投票
   发表时间:2007-10-22  
抛出异常的爱 写道
A表model            a
B表model A的历史表  b

如果有a要update
session.saveupdate(a)
之前先在B表查寻
session.get(B.class,a.id);
如果在B表中含有的话
把a的内容拷贝到b
beansutil.copy(a,b);
session.save(b);
如果b表里的数据很大的话,操作不是很慢
0 请登录后投票
   发表时间:2007-10-23  
再慢能慢的过得到数据库文件?
0 请登录后投票
   发表时间:2007-10-23  
抛出异常的爱 写道
再慢能慢的过得到数据库文件?
mysql 一张表3000万的数据左右。
0 请登录后投票
   发表时间:2007-10-23  
这种需求一定要用Java来实现有点麻烦,如果是我,可能考虑换支持分区功能的数据库好了
0 请登录后投票
   发表时间:2007-10-23  
可以的,你可以利用hibernate的事务,比如save,你也可以返回一个int值,它就是你这个表插入多少条
假如到达1亿条,那么则对另一张表进行插入,否则不对另一张表操作
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics