如题,从网上找了找资料,发现几乎就两种解决方案,其中之一是利用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(); }