P6SPY打印insert语句不全?

很偶然的,发现在整合SpringSide3的Hibernate时,执行类似

entityDao.save(entity1);
entityDao.save(entity2);

 代码,P6SPY的抓取SQL,只记录了一条insert语句。

一度以为是我改造的P6SPY版本有问题,

今天再研究这个问题时,发现当日志级别为debug时,出现了AbstractBatch这个类,于是我怀疑,Hibernate在session提交时的dirty check阶段会只能判断一个entity的save情况,大于一次的就使用批量插入来加快效率。

但是P6SPY这个框架可能对jdbc的批量更新没有做完善,导致只记录了最后一次插入的sql。

最后使用jdbcTemplate.batchUpdate()方法证实了这个想法。

再次记录一下,也算解决了困扰多时的一个问题,虽然并不是非常重要。

要彻底解决的话,还要系统的看P6SPY的源代码,暂时没有这个精力。

另:话说P6SPY自从2005年发布了1.3版后就停止更新了,不过我很“神奇”的发现github上有一个叫P6SPY的项目,而作者就是patmoore,版本到了2.0-SNAPSHOT 噢。

相关推荐