我想知道是否有一种内置/标准方法来审计Spring(3.1),Hibernate / JPA环境中的db-rollbacks。
非常适合任何提示。
由于 强尼
答案 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()方法的各种方法。