p6spy列印hibernate事務提交產生的
阿新 • • 發佈:2018-12-11
-
問題 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即可。