首页新闻找找看学习计划

hibernate 批量插入

0
悬赏园豆:20 [待解决问题]

如题,从网上找了找资料,发现几乎就两种解决方案,其中之一是利用session.flush这个强制让缓存中的对象 写入到数据库中。但是今天我做了一个小DEMO。

public void insert(User user,Session session) {

Transaction tran = session.beginTransaction();
session.saveOrUpdate(user);
if (++test.count % 2 == 0) {
System.out.println(test.count);
session.flush();
session.clear();
}
tran.commit();

}
这是我的insert方法。也就是说如果这样可以解决批量插入的问题,就是说在flush时,会和数据库通信?(这里有个疑问)。
但是我利用抓包工具监听数据库端口时,发现在session.saveOrUpdate(user);时,就已经产生了TCP链接。而在执行到 session.flush()时,并没有执行TCP链接。也就是说,session.flush()并没有批量和数据库通信。那这样的一种方法,并没有 可以减少和数据库的链接次数。那它是怎么样改善性能的呢?还是说,这样的方法就无法改善性能????

求大神,赐教。!!在线等!

下面是利用了flush后的抓包的截图。


代码为:

    public void insert(User user,Session session) {
    
        Transaction tran = session.beginTransaction();
        session.saveOrUpdate(user);
        if (++test.count % 2 == 0) {
            System.out.println(test.count);
            session.flush();
            session.clear();
        }
        tran.commit();
        
    }

 

下面是直接SAVE后的抓包的截图。


代码为:

    public void insert(User user,Session session) {
    
        Transaction tran = session.beginTransaction();
        session.saveOrUpdate(user);
//        if (++test.count % 2 == 0) {
//            System.out.println(test.count);
//            session.flush();
//            session.clear();
//        }
        tran.commit();
        
    }

 

 

   
shenghaishiweini的主页 shenghaishiweini | 初学一级 | 园豆:166
提问于:2014-07-25 14:15
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册