审计db-rollbacks

时间:2011-12-15 11:49:21

标签: java hibernate spring jpa

我想知道是否有一种内置/标准方法来审计Spring(3.1),Hibernate / JPA环境中的db-rollbacks。

非常适合任何提示。

由于 强尼

2 个答案:

答案 0 :(得分:1)

启用“hibernate.show_sql”并使用日志配置

log4j.logger.org.hibernate.SQL=DEBUG, SQL_APPENDER
log4j.additivity.org.hibernate.SQL=false

应该可以帮助您记录SQL语句。

答案 1 :(得分:0)

如果要监控回滚,可以设置org.hibernate.transaction

的日志记录
13:50:28,597 DEBUG http-8080-1 org.hibernate.transaction.JDBCTransaction - begin
13:50:28,657 DEBUG http-8080-1 org.hibernate.transaction.JDBCTransaction - current    autocommit status: true
13:50:28,657 DEBUG http-8080-1 org.hibernate.transaction.JDBCTransaction - disabling autocommit
13:50:28,714 DEBUG http-8080-1 org.hibernate.transaction.JDBCTransaction - commit
13:50:28,773 DEBUG http-8080-1 org.hibernate.transaction.JDBCTransaction - re-enabling autocommit
13:50:28,828 DEBUG http-8080-1 org.hibernate.transaction.JDBCTransaction - committed JDBC Connection

如果要在事务回滚时执行某些操作,可以使用AOP创建方面并将其映射到org.hibernate.Transaction.rollback()方法执行。

@Aspect
public class TransactionMonitoringAspect {

@Before("execution(* org.hibernate.Transaction.rollback())")
public void deviceLoad(String deviceSerial) {
  //do something here
}

}

您可以使用org.aspectj.lang.annotation包中的各种注释来执行rollback()方法的各种方法。