1. 程式人生 > >關於spring手動進行事務提交以及回滾的問題。

關於spring手動進行事務提交以及回滾的問題。

首先,就我的理解。

事務的過程如下:開始事務--------提交/回滾事務。

事務就是一系列執行的過程。開始之後,就會執行過程,並且記住過程。這個時候,資料庫中所用的表是被鎖定了的。所以說,如果你只開始了事務,沒有進行commit或者rollback,資料庫中的所用的表就會被鎖定。這個時候資料庫中的表是打不開的,會出現一直在查詢的過程。只能把視窗關掉,然後進行資料庫表解鎖的操作。所以開始事務之後,一定要進行  提交/回滾事務的操作。並且,commit之後就不能再rollback了。commit和rollback不能連續執行。否則會報Transaction is already completed - do not call commit or rollback more than once per...
下面說下如何執行手動執行 事務提交以及回滾 的操作①JDBC事務:spring中的配置:
<!-- (事務管理)transaction manager, use JtaTransactionManager for global tx -->
	<bean id="transactionManager"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource"/>
	</bean>
	<tx:annotation-driven transaction-manager="transactionManager"/>


impl中通過這樣獲取:
@Resource(name="transactionManager")
	private DataSourceTransactionManager transactionManager;


具體執行操作:
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW); // 事物隔離級別,開啟新事務,這樣會比較安全些。
TransactionStatus status = transactionManager.getTransaction(def); // 獲得事務狀態
try {
	//邏輯程式碼,可以寫上你的邏輯處理程式碼
	transactionManager.commit(status);
} catch (Exception e) {
	transactionManager.rollback(status);
}



再加上一點:insert多條記錄的時候,需要注意:如果一條insert語句  插入超過 120條記錄(最好不要超過100條),就會出錯:傳入的表格格式資料流(TDS)遠端過程呼叫(RPC)協議流不正確。此 RPC 請求中提供了過多的引數。最多應為 2100。所以這個就需要資料進行分組了。還有就是大家通過eclipse,myeclipse或者idea有人會遇見通過maven下載jar包非常慢的情況,

在這裡給大家推薦一個通過ss翻牆的方式,國內目前由於zf嚴厲打擊VPN,博主買的loco網路加速器已經登入不了了。瑪德官網都找不到了,更不要提找客服退款了。

下面是連結,博主測試了下網速還是可以的,感覺比loco買的高階VIP套餐還要好,當然loco也有可能是被查水錶限速了。

價格也更優惠,15美刀1年,可以用支付寶支付。