zoukankan      html  css  js  c++  java
  • 小白的进阶之路9

    ---恢复内容开始---

    今天开始学习spring的事物管理

    先写一个转账的例子:

    动手之前,先把逻辑搞清楚:

    持久层:

        AccountDao(){ ------》接口

          public void in(String in,double money);

          public void out(String out,double  money);

    }

        AccountDaoImpl{-------》实现类,配置文件需要注入

        private serviceDao sd;------->配置文件注入时,采用ref

        void in(){}

        void out(){}

    }

    业务层:

          serviceDao(){-----》接口

          public void pay(String in,String out,double money);

    }

          ServiceDaoImpl(){----》实现类

            private JdbcTemplate jdbcTemplate;-------》这是引用对象,需要用ref注入(这个注入之前一定要记得注入数据库连接。然后此对象引入ref  DataSource。)

            

           public void in(String in,double money);//这两个是重写方法。

          public void out(String out,double  money);

    }

     

     业务层依赖持久层。

     jdbc是java数据库连接,其过程是:

    connection(存取事务)-------》c3p0连接池(存取连接,需要注入数据库)------》plamtransactionmanager平台事务管理器(管理事务,需要注入连接池)

    事物的传播特性

    以上算上复习一下数据库的知识,话题回到我们之前做的转账小例子。

    我们都知道,数据库的一大特性就是事务,那么?何为事务?

    就是要么一起成功,要么一起失败。就上面的例子而言,在没有任何保证的情况下,如果遇到异常,比如

    就会出现一方加钱,一方不减钱的情况,所以说,此时需要一个事务平台管理器。所以xml配置的正确写法是

    第一步:建立数据库连接

    第二步:配置jdbc模板,模板中需要注入数据库。

    第三步;:建立平台事务管理器

    第四步:配置通知和切面。

    OK!!!大功告成。。。。

    这时,遇到异常时,不会出现错误的转账情况。

     下面开始用注解的方式完成事务,不需要配置通知和切面,改成如下配置,然后在需要加事务的service层的类或方法上,加上@transactional 注解7

    ---恢复内容结束---

  • 相关阅读:
    python字符串的常用方法
    python基础之数据类型
    python自定义带参数和不带参数的装饰器
    python中logging结合pytest打印日志
    本地的项目上传到gitee仓库步骤--适合小白上手
    Python中的分数运算
    2018年6月23日开通我的Python学习博客
    python多版本兼容性问题:当同时安装Python2和Python3后,如何兼容并切换
    github之关联远程仓库
    SHH验证
  • 原文地址:https://www.cnblogs.com/hanmengdi/p/9427009.html
Copyright © 2011-2022 走看看