社区
Web 开发
帖子详情
hibernate 插入大量数据的 效率
tpz_stamp
2009-11-24 05:34:18
数据库是oracle,主键来自sequence。当插入一颗树到多个表里时,(e.g. Scholl -> Grade -> Class -> Student),取得sequence.nextval,的过程相当慢,导致整个插入过程长的无法接受,大家有什么办法处理这种情况吗?
...全文
987
42
打赏
收藏
hibernate 插入大量数据的 效率
数据库是oracle,主键来自sequence。当插入一颗树到多个表里时,(e.g. Scholl -> Grade -> Class -> Student),取得sequence.nextval,的过程相当慢,导致整个插入过程长的无法接受,大家有什么办法处理这种情况吗?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
42 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
shuimanqingyi
2010-05-31
打赏
举报
回复
我现在也遇到了类似的问题
先从数据库中查出数据 然后一条条处理 5W条左右
太慢了 不知道该咋办
tjb1216
2009-11-30
打赏
举报
回复
刚接触hibernate,好东西,帮顶一下
flower1515
2009-11-30
打赏
举报
回复
hibernate官方推荐的做法是:用循环插入,然后设置一个条数,定时清空缓冲区。
比方你插入10000W一次,你可以设置每100条你就调用session.flush();ssesion.clear();这个表示立即将当前这100条写入数据库并释放内存
hbwhwang
2009-11-27
打赏
举报
回复
呵呵,怪问题。
重新安装ORACLE试一下,还不行就到ORACLE论坛上求助吧
chen7788
2009-11-27
打赏
举报
回复
[Quote=引用 17 楼 bingliang008 的回复:]
引用 6 楼 zl3450341 的回复:
写存储过程吧
我也支持写存储过程
[/Quote]
赞同!
datiechui
2009-11-27
打赏
举报
回复
数据用java代码加,主键用触发器加,我插入2000多条数据只用了几秒钟
下面是我的部分java源代码,插入数据时不包含主键
Connection con = session.connection();
PreparedStatement prestmt = null;
strsql = "insert into CB_REPORTMX (REPORTID,dirid, LH, HH, SHEET, ZHI, LX, YWRQ, GSDM) values (?, ?, ?, ?, ?, ?, ?, ?, ?)";
prestmt = con.prepareStatement(strsql);
for (i = 0; i < record.length; i++) {
values = Untitl.splitString(record[i], (char) 2 + "");
prestmt.setString(1, reportid);
prestmt.setLong(2, cbreportml.getId());
prestmt.setString(3, values[0]);
prestmt.setString(4, values[1]);
prestmt.setString(5, values[2]);
prestmt.setString(6, values[3]);
prestmt.setString(7, values[4]);
prestmt.setString(8, ywrq);
prestmt.setString(9, (String) httpsession.getAttribute("Dwdm"));
prestmt.addBatch();
}
prestmt.executeBatch();
prestmt.close();
下面是触发器源代码,在数据库中建,用来插入主键
create or replace trigger reportmx_bir --创建行级触发器
before insert on cb_reportmx
for each row
begin
select SQREPORTMX.nextval into :new.ID from dual;
end reportmx_bir ;
yuyeyi
2009-11-27
打赏
举报
回复
楼主可以试20条提交一次试试
datiechui
2009-11-27
打赏
举报
回复
用PreparedStatement
fztjava
2009-11-27
打赏
举报
回复
优化sql
godlike
2009-11-27
打赏
举报
回复
up
shrek11
2009-11-27
打赏
举报
回复
在操作数据库的时候,不要
一次性提交,大概执行了10个SQL提交一次.
liguominz
2009-11-27
打赏
举报
回复
写存储过程应该会快很多~
zhoushijin5201314
2009-11-27
打赏
举报
回复
写存储过程吧啊,不过移植手影响啊,用JDBC试下吧
crazylaa
2009-11-27
打赏
举报
回复
漂到第2页了,帮顶
xuexijava
2009-11-26
打赏
举报
回复
up
huailing963
2009-11-26
打赏
举报
回复
学习下
tpz_stamp
2009-11-26
打赏
举报
回复
我又在自己机器上装了个oracle,做了同样的测试,读1000个sequence不到1秒。。。
我要疯了,以前都是连到服务器上的oracle上做的测试,得到了这个奇慢的怪异结果。但在同样服务器上插1000条数据,只要不到3秒,其中包括运行其他程序逻辑。
我要疯了,这吊问题竟然搞了我4天。
laker_914
2009-11-26
打赏
举报
回复
帮顶
meander
2009-11-26
打赏
举报
回复
up
tpz_stamp
2009-11-26
打赏
举报
回复
我用的oracle JDBC driver 是 ojdbc14.jar。我写了个最简单的程序,没有spring, 没有hibernate,自己建一个connection到数据库,然后读sequence 1000次,然后关闭连接。 这样去读sequence,同样非常非常非常非常非常的慢,差不多要1秒一个,我不知道问题在哪里,从来没有遇到这样的问题,以前一直用的mysql,ms sql,table 主键是 identity式的,从来没有过这种问题。
加载更多回复(22)
Hibernate
Hibernate
下
数据
批量处理解决方案
hibernate
-release-4.2.21.Final官方原版
hibernate
-release-4.2.21.Final官方原版
Struts2+
Hibernate
+Spring 整合示例
Struts2+
Hibernate
+Spring 整合
hibernate
-release-5.2.2.Final.zip
官方版
hibernate
-release-5.2.2.Final.zip(分享)
hibernate
-release-4.3.5.Final.zip
hibernate
-release-4.3.5.Final.zip 最新 稳定 最终版
Web 开发
81,122
社区成员
341,744
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章