hibernate批量插入操作

请问我想用hibernate数据库表做映射,执行插入数据操作的时候,如果想向一个表同时存入10000条数据,try{tx=session.beginTransaction... 请问我想用hibernate数据库表做映射,执行插入数据操作的时候,如果想向一个表同时存入10000条数据,
try {
tx = session.beginTransaction();
UserInfo u = new UserInfo();
u.setUserName("FuJingZhou");
u.setPassword("123");
System.out.println("开始插入数据到数据库……");
session.save(u);
tx.commit();
tx = null;
}
。。。
是将以上部分做循环么?刚接触hibernate,请高手指教!谢谢!
展开
 我来答
tanjiazhang
2008-08-06 · TA获得超过108个赞
知道答主
回答量:12
采纳率:0%
帮助的人:0
展开全部
是用循环,最后commit,但是要注意不能一次过循环save10000条数据再commit,因为这样会使Hibernate的一级缓存爆满导致内存溢出的异常,所以每隔100条记录就commit一次吧,Hibernate的二级缓存会决定该什么时候提交以实现批量插入的高效率的。
try {
tx = session.beginTransaction();
for(int i=0;i<=10000;i++)
{
UserInfo u = new UserInfo();
u.setUserName("FuJingZhou");
u.setPassword("123");
session.save(u);
if(i%100||i==10000)
{
tx.commit();
if(i<10000)
tx = session.beginTransaction();
}
}
tx = null;
}
方法大概是这样的,这段代码我没有运行过,你再注意一下结构吧。
dinglioop
2008-08-06
知道答主
回答量:8
采纳率:0%
帮助的人:13.4万
展开全部
For循环操作绝对可以达到你的目的,也就是存入多条数据,但是这种方法性能比较差。
常见的做法是批处理操作,也就是batch操作。如hibernate中的bulkUpdate就是一种批处理操作。这个方法可以接受一个Sql语句和一个对象数组,而此对象数组就是待操作的对象。
从底层看就是调用Jdbc的batch方法。有兴趣可以看一下。
此方法的性能要比For循环操作的方法高。
更多细节可以参考Hibernate Api。
希望这个能对你有所帮助。

参考资料: Hibernate Api

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式