笑看风云
一切从头开始
posts - 28, comments - 1, trackbacks - 0, articles - 2
导航
BlogJava
首页
新随笔
联系
聚合
管理
<
2008年12月
>
日
一
二
三
四
五
六
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
给我留言
查看公开留言
查看私人留言
随笔分类
(26)
C语言(1)
dwr(1)
hibernate(4)
Java(11)
javascript(5)
struts(1)
数据库(3)
随笔档案
(28)
2009年11月 (1)
2009年9月 (1)
2009年5月 (2)
2009年4月 (3)
2009年1月 (3)
2008年12月 (5)
2008年8月 (2)
2008年7月 (10)
2008年6月 (1)
文章档案
(2)
2008年7月 (2)
收藏夹
(3)
我的收藏(3)
搜索
积分与排名
积分 - 21653
排名 - 1647
最新评论
1. re: 把数字转换成中文货币表示
10001000.09 竟然输出
壹仟零壹仟圆零玖分
--笨牛
阅读排行榜
1. hibernate批量插入数据(5074)
2. 10秒后实现页面自动跳转(3177)
3. Hibernate配置文件(转载)(1450)
4. dwr session error问题(919)
5. 通用hibernateDAO(887)
评论排行榜
1. 把数字转换成中文货币表示(1)
2. js进行有效性验证(0)
3. 表单错误信息的显示(0)
4. 10秒后实现页面自动跳转(0)
5. JSP隐藏对象(0)
hibernate批量插入数据
Posted on 2008-12-11 16:10
笑看风云
阅读(5074)
评论(0)
编辑
收藏
所属分类:
数据库
hibernate本身不具备插入批量数据的能力,因此开发中尽量少用。
下面是一个测试例子:
public
void
testadd()
{
Session session
=
HibernateUtils.getSession();
Transaction tx
=
null
;
try
{
tx
=
session.beginTransaction();
for
(
int
i
=
0
;i
<
2000
;i
++
)
{
Student stu
=
new
Student();
stu.setName(
"
stu
"
+
i);
stu.setAddr(
"
addr
"
+
2
*
i);
session.save(stu);
//
添加20条以后,强制入库
//
clear()清空缓存
//
postgres数据库的隔离级别是已提交读(Read committed),
//
所以flush以后,数据看不到,只有commit后才能看到数据,
//
如果失败,rollback,前面的flush的数据不会入库
if
(i
%
20
==
0
)
{
session.flush();
session.clear();
}
}
tx.commit();
}
catch
(Exception ex)
{
ex.printStackTrace();
tx.rollback();
}
finally
{
HibernateUtils.closeSession(session);
}
}
我使用的数据库是postgres,通过flush把数据强制入库,然后通过session.clear()清空缓存中的实体对象,防止jvm内存溢出,速度还行。
不过没有大批量的添加,如果大批量的添加可能要考虑使用JDBC,还不行的话,估计得使用的数据库本身自带的快速导入工具.还不行的话,没话说,换数据库,哈哈。
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
相关文章:
sql语句
hibernate批量插入数据
postgres隔离级别
Powered by:
BlogJava
Copyright © 笑看风云