1. 程式人生 > >p6spy列印hibernate事務提交產生的

p6spy列印hibernate事務提交產生的

  • 問題 hibernate在提交事務時會檢查發生變化的持久化物件(Persistence Object),同時生成update SQL語句,進行物件更新。 此時發現p6spy沒有打印出來完整sql,這是怎麼回事呢?

  • 分析 跟蹤hibernate程式碼,可以發現 org.hibernate.persister.entity.AbstractEntityPersister.java (hibernate4.2.21)

    protected boolean update(.......) {
                update = session.getTransactionCoordinator()
						.getJdbcCoordinator()
						.getBatch( updateBatchKey )
						.getBatchStatement( sql, callable );
						......
						session.getTransactionCoordinator().getJdbcCoordinator().getBatch( updateBatchKey ).addToBatch();
.........
}

p6spy的預設配置是不開啟batch操作日誌的

#list of categories to exclude: error, info, batch, debug, statement,
#commit, rollback, result and resultset are valid values
# (default is info,debug,result,resultset,batch)
#excludecategories=info,debug,result,resultset,batch
  • 解決 修改p6spy的配置檔案,在excludecategories中去掉batch即可。