社区
Web 开发
帖子详情
hibernate 插入大量数据的 效率
tpz_stamp
2009-11-24 05:34:18
数据库是oracle,主键来自sequence。当插入一颗树到多个表里时,(e.g. Scholl -> Grade -> Class -> Student),取得sequence.nextval,的过程相当慢,导致整个插入过程长的无法接受,大家有什么办法处理这种情况吗?
...全文
977
42
打赏
收藏
hibernate 插入大量数据的 效率
数据库是oracle,主键来自sequence。当插入一颗树到多个表里时,(e.g. Scholl -> Grade -> Class -> Student),取得sequence.nextval,的过程相当慢,导致整个插入过程长的无法接受,大家有什么办法处理这种情况吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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)
基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)
而CGI
效率
相对较低,所以也不考虑。由于J2EE的开源的框架中提供了MVC模式实现框架Struts、对象关系模型中的
Hibernate
的框架及拥有事务管理和依赖注入的Spring。利用现存框架可以更快开发系统。所以选择Java技术作为...
java
hibernate
插入
数据
_
hibernate
批量
插入
数据
如题,有两种方法1)使用FLUSH2)使用JDBC分别来解释:1)
hibernate
在进行
数据
库操作的时候,都要有事务支持的。可能你曾遇到过,没有加事务,程序会报错的情况。而事务每次提交的时候,都会和
数据
库交互,即让
数据
库...
Hibernate
批量
插入
大量
数据
速度性能慢的解决方案
Hibernate
批量
插入
大量
数据
速度性能慢的解决方案
Hibernate
的缓存,
Hibernate
有内部缓存与二级缓存之说。由于
Hibernate
对这两种缓存有着不同的管理机制,对于二级缓存,我们可以对它的大小进行相关配置,而对于内部...
hibernate
批量
数据
插入
优化 ------用
Hibernate
插入
1万条
数据
,怎么做,有什么好的优化方法吗
Hibernate
批量处理:
Hibernate
批量处理其实从性能上考虑,它是很不可取的,...使用中采用下面的第三种优化方案的
数据
是:100000条
数据
插入
数据
库,主流台式机的配置,需要约30分钟,呵呵,晕倒. 总结下来有三种来
Hibernate
的批量
插入
一、批量
插入
(两种方式) 1,通过
Hibernate
缓存 如果这样写代码进行批量
插入
(初始设想): package com.anlw.util; import org.
hibernate
.Session;import org.
hibernate
.SessionFactory;import org.
hibernate
....
Web 开发
81,094
社区成员
341,711
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章