在oracle資料庫中,一般ddl語句是隱式commit提交的,所以在修改表或者建立表時,不寫commit也會執行。
但一條sql的時候,如果不顯示commit(),sql便不會持久化到資料庫。
在spring中,jdbctemplate操作採用的是jdbc預設的autocommit模式,當沒有顯示指定事務時,jdbc會將一條sql作為乙個事務來執行。也就是說,資料還是會持久化到資料庫。
由於一條sql就是乙個事務。當這條sql執行出錯的時候,這條sql所做的修改會回滾。但是這條sql之前的動作不會回滾。舉個例子:
如果乙個方法有三條sql操作:
a b如果該方法沒有配置事務,那麼a、b、c三條sql會作為三個事務來執行。c
當a、b執行完,執行c時出錯。c所做的修改都會被回滾,但是,a和b所做的修改不會被回滾,還是會持久化到資料庫。
關於Spring 的事務
首先了解什麼事事務,和一些基本概念。什麼是事務 事務 transaction 是訪問並可能更新資料庫中各種資料項的乙個程式執行單元 unit 事務的四大特性 事務的特性 acid 原子性 atomicity 一致性 consistency 隔離性 isolation 永續性 durability 事...
關於spring容器事務回滾
註解方式宣告事務,該事務宣告的範圍是service中的方法,而一般的事務宣告時不是宣告在 業務邏輯方法上的,而是宣告在單一的資料庫操作方法上的 transactional public class userserviceimpl implements userservice,new int thro...
Spring 事務 事務控制
0 註解 autowire 自動注入 url url b 1 spring專案中事務手動回滾 b transactionaspectsupport.currenttransactionstatus setrollbackonly 或者丟擲異常 transactional rollbackfor pu...