gpt4 book ai didi

java - Spring Data CrudRepository 和事务

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:55:16 25 4
gpt4 key购买 nike

我正在尝试在 CrudRepository 接口(interface)上实现交易。我是这方面的初学者,我目前的问题是,当收到来自不同客户的大量请求时,我有时会收到重复的请求。为避免这种情况,我想在 Spring 中使用 SQL 事务及其实现,但我无法使其正常工作。

这是我尝试过的方法:

@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);

}

不过好像不行。我尝试在我正在调用的 Java 方法中添加 @Transactionnal 注释,但我也无法让它工作。

我应该如何处理 CrudRepository 上的事务?还是我使用的东西完全错误?

最佳答案

除了 crm86 的回答之外,还有一些关于 @Transactional 注释的注释:

  • 在您的应用程序中注释入口点似乎是最佳实践(例如,您的 Web Controller 方法或计划批处理的主要方法)。通过使用注释属性 TxType,您可以确保位于应用程序更深处的方法中的约束/条件(例如,如果没有 trx-context 正在运行,TxType.MANDATORY 将抛出,等等)。

  • @Transactional 注释仅在类作为 spring bean 加载时才有效(例如类级别的 @Component 注释)。

  • 请记住,只有 RuntimeException 会导致回滚。如果您想要导致回滚的已检查异常,您必须使用属性 rollbackOn 枚举每个此类异常。

  • 类级别的注释对此类的所有公共(public)方法都有效。方法级别的注解会覆盖类级别的注解。上面示例中的重复注释(首先在类级别,然后在方法级别)无效。

关于java - Spring Data CrudRepository 和事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29621846/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com