Как получить метку времени начала транзакции в настройках Spring + JPA + Hibernate? - PullRequest
2 голосов
/ 13 января 2011

Я использую Spring 3.0.5, JPA, Hibernate 3.5.5-Final и Spring JpaTransactionManager.Кто-нибудь знает простой способ программно получить временную метку для начала каждой транзакции?

Ответы [ 2 ]

2 голосов
/ 14 января 2011

Идея

Начиная с JpaTransactionManager расширяется AbstractPlatformTransactionManager и каждая транзакция начинается с вызова метода # getTransaction , вы можете написать аспект вокруг этого метода.

Формат

@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 );
   }
}
0 голосов
/ 20 августа 2013

Для этого может быть возможно использовать фильтр в WEB-INF - он вставит отметку времени в контекст запроса как именованный атрибут.Отметка времени будет не отметкой времени транзакции, а отметкой времени запроса.Я подозреваю, что он будет делать то, что вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...