【发布时间】:2022-01-04 02:56:20
【问题描述】:
我看过文章说我们应该尝试限制事务的范围,例如而不是这样做:
@Transactional
public void save(User user) {
queryData();
addData();
updateData();
}
我们应该使用 Spring 的 TransactionTemplate 将 queryData 从事务中排除(或将其移出事务方法):
@Autowired
private TransactionTemplate transactionTemplate;
public void save(final User user) {
queryData();
transactionTemplate.execute((status) => {
addData();
updateData();
return Boolean.TRUE;
})
}
但我的理解是,由于JDBC will always need a transaction for all operations,如果我使用第二种方式,将有2个事务打开和关闭,1个用于queryData(由JDBC打开),另一个用于transactionTemplate.execute内的代码由打开我们班。如果是这样,既然您已经将 1 个事务拆分为 2 个,这不会浪费资源吗?
【问题讨论】:
标签: java spring hibernate jdbc transactions