(19)Spring學習記錄---Spring_bean(隔離級別&回滾&只讀&過期)
阿新 • • 發佈:2018-12-18
隔離級別
使用isolation定義隔離級別,常用取值是READ_COMMITTED
回滾
@Service("bookService") public class BookServiceImpl implements BookService { @Autowired private BookShopDAO bookShopdDAO; //新增事物註解 //預設情況下使用spring的宣告事物對所有執行時異常進行回滾,也可以指定某特定的異常回滾,而對非特定不回滾 //noRollbackFor 對某型別不進行回滾 //RollbackFor 只對某型別回滾 @Transactional( noRollbackFor= {UserAcoountException.class}) @Override public void purchase(String username, String isbn) { //獲取書單價 int price = bookShopdDAO.findbookPriceByIsbn(isbn); //更新庫存 bookShopdDAO.updateBookNum(isbn); //使用者餘額減 bookShopdDAO.updateUserAccount(username, price); } }
我這裡設設定對 UserAcoountException.class不進行回滾
執行前
執行後
結果:庫存減1,但是餘額沒有變化
解釋:因為我沒有對餘額進行回滾,庫存更新是在餘額更新之前
只讀
readOnly 指定事物是否只讀 表示這個事物只讀資料不更新資料 幫助資料庫引擎優化事物 若某資料只需要訪問 不需要修改 設定isolation=Isolation.READ_COMMITTED
過期
通過timeout設定過期時間,若方法沒有在規定時間內執行完,丟擲異常