在服务中
@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吗?
答案 0 :(得分:1)
在提供的代码中有3个DB查询。因此,最好定义一个查询并将逻辑放在那里,但要避免早期优化。
如果通常不调用该方法,则可以进行3次DB命中。优化真正的瓶颈。
有多种方式:
您可以将其设为只读
@Transactional(readOnly = true)
您可以使用JOIN和WHERE编写一个查询以命中DB一次。
或者可能缓存结果会有所帮助