2017-05-16 3 views
0
サービスで

春トランザクション管理

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

春は、トランザクションを開いて、それに応じて閉じます。

接続が開いてDBに3回ぶつかっているので、費用はかかりますか? (接続が1回開かれる)/ ORを使用する必要がありますか?

答えて

1

提供されているコードには、3つのDBクエリがあります。したがって、1つのクエリを定義してそこにロジックを配置することをお勧めしますが、早期の最適化は避けてください。

このメソッドが頻繁に呼び出されない場合は、3つのDBヒットがあるとうまくいきます。実際のボトルネックを最適化します。

複数の方法があります。

  1. あなたが登録しようと1つのクエリを記述し、WHERE一度DBをヒットすることができ、それは読み取り専用

    @Transactional(読み取り専用=真)

  2. することができます。

  3. や結果をキャッシュすることができる

を助けます
関連する問題