2017-05-16 138 views
0

在服务Spring事务管理

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

春天打开事务和关闭相应。

由于连接打开,我们打到DB三次,它会花费吗? (连接打开一次)/或者我们应该使用连接?

回答

1

在提供的代码中有3个数据库查询。所以最好定义一个查询并将逻辑放在那里,但避免早期优化。

如果该方法不常被调用,那么可以有3个数据库命中。优化真正的瓶颈。

有多种方式:

  1. 你可以把它只读

    @Transactional(唯读=真)

  2. 你可以写一个查询与JOIN和WHERE打DB一次。

  3. ,或者可以缓存结果将有助于