Jon*_*gut 6 java spring transactions spring-boot
我正在尝试在CrudRepository接口上实现事务.我是初学者,我目前的问题是,当收到来自不同客户的大量请求时,我有时会得到重复.为了避免这种情况,我想使用SQL Transactions及其在Spring中的实现,但我无法使其正常工作.
以下是我尝试过的方法:
@Repository
@EnableTransactionManagement
@Transactional
public interface ApplicationPackageDao extends CrudRepository<ApplicationPackage, Long> {
/**
* Find if a record exists for this package name ,
* @param packageName
* @return
*/
@Transactional
ApplicationPackage findByPackageName(String packageName);
}
Run Code Online (Sandbox Code Playgroud)
但它似乎不起作用.我试图在我正在调用的Java方法中添加@Transactionnal注释,但我也无法使其工作.
我如何处理CrudRepository上的事务?或者我完全使用了错误的东西?
除了crm86之外,还回答了@Transactional注释的一些注释:
似乎最好的做法是在应用程序中注入入口点(例如,您的Web控制器方法或计划批处理的主要方法).通过使用注释属性TxType,您可以确保在应用程序中更深层次的方法中的约束/条件(例如,如果没有运行trx-context,则抛出TxType.MANDATORY等).
如果将类作为spring bean加载(例如,类级别为@Component注释),则@Transactional注释仅具有效果.
请记住,只有RuntimeException导致回滚.如果要检查导致回滚的已检查异常,则必须使用属性rollbackOn枚举每个此类异常.
类级别的注释对此类的所有公共方法都有效.方法级别注释会覆盖类级别的注释.上例中的重复注释(首先在类级别,然后在方法级别)没有任何效果.
归档时间: |
|
查看次数: |
9454 次 |
最近记录: |