Database Spring事务管理

Database Spring事务管理,database,spring,transactions,spring-jdbc,jdbctemplate,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打开事务并相应地关闭 由于连接已打开,

在职

@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,这会花费多少钱?由于连接打开了一次/或者我们应该使用join吗

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

如果不经常调用该方法,则可以使用3 DB的命中率。优化真正的瓶颈

有多种方法:

您可以将其设置为只读

@TransactionalreadOnly=true

您可以使用JOIN编写一个查询,并在哪里访问数据库一次

或者缓存结果会有所帮助