春季交易管理

时间:2017-05-16 10:04:03

标签: database spring transactions spring-jdbc jdbctemplate

在服务中

@Transactional
public void operation(Stock val) {
    Stock findStock = stockDAO.find(val);
    Product findProduct = productDAO.find(findStock.getProductId());
    Item findItem= itemDAO.find(findProduct.getItemId());
}

Spring打开事务并相应关闭。

当连接打开并且我们要三次到DB时,它会花费多少钱? (连接打开一次)/ OR我们应该使用join吗?

1 个答案:

答案 0 :(得分:1)

在提供的代码中有3个DB查询。因此,最好定义一个查询并将逻辑放在那里,但要避免早期优化。

如果通常不调用该方法,则可以进行3次DB命中。优化真正的瓶颈。

有多种方式:

  1. 您可以将其设为只读

    @Transactional(readOnly = true)

  2. 您可以使用JOIN和WHERE编写一个查询以命中DB一次。

  3. 或者可能缓存结果会有所帮助