java Spring 事務的初次使用與驗證

事務,只要是爲了保證數據的原子性。避免出現髒數據。java

下面來說解下spring是如何使用事務的。spring

1.配置事務。這裏採用的是註解的模式數據庫

<!--	 配置事務管理器 ,若是你暫時未使用到事務能夠不配置,次如下內容都可以在不適用事務的狀況下刪除 -->
 	<bean id="transactionManager"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager" >
		<property name="dataSource" ref="dataSource"/>
	</bean>
	
	 <!-- 開啓事務行爲 -->
    <tx:annotation-driven transaction-manager="transactionManager" />

 2.配置就基本搞定了,而後就是在service或者service的方法上使用@Transactional定義是否須要是否管理就好了。mybatis

@Transactional
	@Override
	public String userInfoData(String id) {
		// TODO Auto-generated method stub
		System.out.print("調用 dao層方法");
		UserInfo arr =  loginDao.getUser(1);
		System.out.println("arr id = "+ arr.getId());
		System.out.println("arr Username = "+ arr.getUsername());
		
		MoneyInfo money = moneyDao.getmoney(1);
		
		moneyDao.InsertMony(500);
		
		loginDao.InsertUser(3, "Tigger");
		
		
		System.out.println("money  = "+ money.getMoney());
		System.out.println("money  += "+ money.getMoney());
		Logger log = Logger.getLogger(UserServiceImpl.class);
		
		log.info("執行了m01...");
		//1.mybatis 的本身調用方法
/*		try {
			mybatisTest();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}*/
		//2.spring + mybatis整合後的調用
		
		return null;
	}

  

以上就基本能夠搞定了,驗證配置是否成功的話,能夠在不加註解的時候插入兩條數據,後面一條數據是會報錯的。ide

若是不使用事務的話,會發現第一條插入成功到DB裏去了,而後在插入第二條的時候,程序報錯。spa

若是這裏使用@Transactional 開啓事務,那麼會發現兩條數據都插入不了,直接報錯了,這裏事務就成功的啓用了起來。code

@Transactional 
(1)這裏說明一下,有的把這個註解放在類名稱上面了,這樣你配置的這個@Transactional 對這個類中的全部public方法都起做用. 
(2)@Transactional 方法方法名上,只對這個方法有做用,一樣必須是public的方法blog

 (3) 數據庫引擎要支持事務,若是是MySQL,注意表要使用支持事務的引擎,好比innodb,若是是myisam,事務是不起做用的事務

相關文章
相關標籤/搜索