笑看风云

一切从头开始
posts - 28, comments - 1, trackbacks - 0, articles - 2

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,还不行的话,估计得使用的数据库本身自带的快速导入工具.还不行的话,没话说,换数据库,哈哈。

只有注册用户登录后才能发表评论。


网站导航: