在每个JPA事务中自动调用方法

时间:2018-10-24 20:46:58

标签: java spring jpa transactions

我想在每次交易开始时调用一个方法(调用Postgres函数)。

我不确定从哪里开始,但是我正在使用JpaTransactionManager。

2 个答案:

答案 0 :(得分:1)

最好的方法是使用面向方面的编程(AOP)。 AOP将帮助您编写一次方法并定义切入点。 什么是AOP?您可以阅读What's AOP?

答案 1 :(得分:1)

我的解决方法是:

通过将所有调用委派给JPATransactionManager的隐藏本地实例来创建替换JPATransactionManager的类。 该类还可以提供注册观察者的可能性。 在配置Spring-Container时,请使用此新类而不是JPATransactionManager,所有开始的事务调用都应通过该路由进行路由。

根据Transaction-Object的解决方案,如果要确保捕获所有开始调用,则还可以创建一个由TransactionManager返回的事务对象的委托,并由TransactionManager返回此委托-委托。