zoukankan      html  css  js  c++  java
  • 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定义是否需要是否管理就行了。

    @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;
    	}
    

      

    以上就基本可以搞定了,验证配置是否成功的话,可以在不加注解的时候插入两条数据,后面一条数据是会报错的。

    如果不使用事务的话,会发现第一条插入成功到DB里去了,然后在插入第二条的时候,程序报错。

    如果这里使用@Transactional 开启事务,那么会发现两条数据都插入不了,直接报错了,这里事务就成功的启用了起来。

    @Transactional 
    (1)这里说明一下,有的把这个注解放在类名称上面了,这样你配置的这个@Transactional 对这个类中的所有public方法都起作用. 
    (2)@Transactional 方法方法名上,只对这个方法有作用,同样必须是public的方法

     (3) 数据库引擎要支持事务,如果是MySQL,注意表要使用支持事务的引擎,比如innodb,如果是myisam,事务是不起作用的

  • 相关阅读:
    canvas实现音乐中的歌词播放效果
    canvas调节视频颜色
    clip API实现遮罩
    总有那么几款发型 是经典不过时的
    很多人喜欢露脚踝你觉得时尚吗?
    王者荣耀花木兰攻略解析
    十位王者给出的单排心得
    IntelliJ IDEA2017 + tomcat 即改即生效 实现热部署
    IntelliJ IDEA2017 + tomcat 即改即生效 实现热部署
    jqGrid分页查询出错
  • 原文地址:https://www.cnblogs.com/sunxun/p/8724255.html
Copyright © 2011-2022 走看看