2017-05-16 137 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. ,或者可以緩存結果將有助於