如何在Spring + JPA + Hibernate设置中获得“事务开始”时间戳?

时间:2011-01-13 06:19:58

标签: java hibernate spring jpa transactions

我正在使用Spring 3.0.5,JPA,Hibernate 3.5.5-Final和Spring的JpaTransactionManager。任何人都知道一种简单的方法来以编程方式获取每个事务开始的时间戳吗?

2 个答案:

答案 0 :(得分:2)

JpaTransactionManager延伸AbstractPlatformTransactionManager以来 并且每个事务都以调用#getTransaction方法开始,您可以围绕该方法编写aspect

方面

@Aspect
public class AspectAroundTransactions() {
   @Pointcut("execution(* org.springframework.*.AbstractPlatformTransactionManager.getTransaction(..))" )
   public void newTransaction() {}

   @Before("newTransaction() && args(transactionDefinition,..)")
   public void beforeStartOfTransaction(TransactionDefinition transactionDefinition) {
      // here goes you code
      long start = System.nanoTime();
      System.out.println("Transaction " + transactionDefinition.getName() + " started at " + start );
   }
}

答案 1 :(得分:0)

可以在WEB-INF中使用过滤器来执行此操作 - 它会将时间戳作为命名属性注入请求上下文。时间戳不是“事务”时间戳,而是请求时间戳。但我怀疑它会做你想做的事。