java - Jdbi3:具有多个dao和@Transaction注解的事务
问题描述
我必须执行一个涉及多个 dao 中的方法的事务,所以我使用的是类似的东西:
jdbi.useHandle(handle -> {
handle.useTransaction(h -> {
Dao1 dao1 = h.attach(Dao1.class);
Dao2 dao2 = h.attach(Dao2.class);
dao1.method1();
dao2.method2();
});
});
但是如果例如在Dao1
method1 中用 注释@Transaction
,例如:
public interface Dao1 {
@SqlUpdate
@Transaction
public void method1();
}
上面的句柄部分会在同一个事务中执行这两种方法吗?还是method1会在执行过程中开启一个新事务?
解决方案
如果您想在另一个事务中重用 DAO 方法,请不要使用 @Transaction 注释。这会导致性能下降和回滚检查点复杂,如果 DBMS 可以支持,则会导致异常。
推荐阅读
- eclipse - Eclipse 清除调试外壳
- spring-boot - 在 AWS EC2(Route 53 + VPC)上使用 Spring Boot 微服务配置 Netflix Eureka
- sorting - j 在选择排序中的价值在哪里?基本 Q,Python 3
- javascript - 如何使用 javascript 在 servlet 中禁用下拉选项
- google-apps-script - 无法使用应用程序脚本 UrlFetchApp 获取共享的谷歌驱动器链接(任何人)
- java - 如何忽略以 // 使用扫描程序类和分隔符开头的整行文本
- java - 如何从 Raspberry Pi 我的 firebase 项目连接 Java 类?
- ios - 通过 iOS 的 JSON 请求和在 REST Web 中的请求编码?
- matlab - 如何从 .mhd 图像中读取 DimeSize?
- javascript - 没有网络服务器的静态 HTML 页面的动态获取