2012-04-04 32 views
0

我在Hibernate中使用jboss 4.2。 我需要記錄事務處理的持續時間,所以我有關於事務完成或回滾所花費的平均時間的統計信息。 我遇到的另一個問題是jboss JTA(arjuna)中止長時間運行的事務,所以我需要知道在那裏配置什麼超時。如何記錄JDBC/Hibernate事務持續時間?

+0

什麼是您的Hibernate版本?一些Hibernate版本可以自己收集統計數據。或者你可以使用AOP框架。 – 2012-04-04 06:03:21

+0

休眠版本是3.0 – erezul 2012-04-08 06:10:54

回答

0

我想你應該創建一個計時器來計算事務開始和結束之間的時間。一個可能性是:


EntityManager em = HibernateUtil.createEntityManager(); //I used JPA's EntityManager instead of hibernate's sessions. createEntityManager iss a function created by you. 
EntityTransaction tx = em.getTransaction(); 
tx.begin(); 
Date startDate = new Date(); 

//... your DB stuff goes here ... 

tx.commit(); 
Date endDate = new Date(); 

MyLogger.logTransactionDuration(startDate, endDate); 

在上面的代碼片段中,我讓你知道如何實現這一點。

如果你願意,你可以使用log4jslf4j api,你只需要在log4j.properties文件中做一些設置。

希望能提供幫助。

+0

我正在尋找一種'無編碼'解決方案,它已經被Hibernate或jboss JTA支持。 – erezul 2012-04-04 11:09:41