hibernate插入数据,求高手赐教,让我的数据插入的快一点

10-12-09 youfeng445
现有一张excel表,大概有1700多条记录下,一条记录包含2个实体(customer,linkman),linkman实体中包含customerid,且

customer中也有好几个字段需要从别的表获取id,我现在的做法是逐行逐列读取,然后把customer信息全部读取后,就存储,获取

customerid后赋值给linkman的customerid,然后再保存linkman ,也就是说一个for就要查好几次表,和插入2次数据,这样的执行

效率太低了,大家有什么好办法,多谢赐教

SpeedVan
2010-12-09 16:03
唉,胡乱换行,看着累,问题描述···难懂。整理下问题吧,或者加个图描述一下也可。

你何必逐行逐列读取,要是可以的话分批缓存到内存中再作操作,逻辑中一次获取一整行数据,利用工厂模式,生成一个聚合(明显customer内聚在linkman),之后就是所谓的持久化操作。

简单的读取加入能再快么,写一次已经最快了,“插入2次数据”?干嘛不一次性加入,就一条sql就行。

你原来的做法是把硬盘作为数据交互地方,不慢才怪,与面向数据库思维一样,引入缓存思想看看。

youfeng445
2010-12-09 16:48
小的是菜鸟,您说的我看不懂,插2次数据是因为是2个表,之所以是查一条插一条,因为客户联系人信息中有一个id是外键,依赖于客户信息的id,如果不先保存客户信息,那这个id值怎么拿到.....

SpeedVan
2010-12-09 17:51
拿到不等于保存到数据库

class linkman{

private customer xx;

}

这个内聚性,总得找到吧。customer本来就在linkman中,怎么会得不到呢?还需要再查么?

用hibernate逆向工程话,倒是要修改一下生成linkman的getCustomerId方法,或者自己另外建个实体,插入服务里再分开更新。

2个表的问题,无论你几个表,只要不是交互操作,一条HQL足以,这应该是你的知识空缺了。

[该贴被SpeedVan于2010-12-09 17:53修改过]

[该贴被SpeedVan于2010-12-09 23:17修改过]

猜你喜欢