小白的进阶之路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

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

原文地址:https://www.cnblogs.com/hanmengdi/p/9427009.html

时间: 2024-07-30 00:17:21

小白的进阶之路9的相关文章

零基础Python学习路线,小白的进阶之路!

近几年Python的受欢迎程度可谓是扶摇直上,当然了学习的人也是愈来愈多.一些学习Python的小白在学习初期,总希望能够得到一份Python学习路线图,小编经过多方汇总为大家汇总了一份Python学习路线图.对于一个零基础的想学习python的朋友来说,学习方法很重要, 学习方法不对努力白费 一定要有一个正确的学习线路与方法零基础Python学习路线,小白的进阶之路!零基础Python学习路线,小白的进阶之路!必学知识:[Linux基础][Python基础语法][Python字符串][文件操作

小白的进阶之路1

在登陆的页面中,需要一个表单,<form action="\goods\loginServlet"  method="post" > 为什么要有这个servlet? 答:需要将这个用户填好的表单交给其他的东西,比如服务器,或者servlet来继续处理或响应. 用户名:<input  type="text" name="username ">. 密   码:<input type="pas

小白的进阶之路2

今天遇到的第一个问题就是我写的jsp代码在 引进css样式的时候,出现了问题,我引不进去. 试了好多次,起先的代码是<link  rel="stylesheet"  type="text/css" src="<c:url value='/css/register.jsp'\>">. 后来将register.css移到和jsp的同一路径下,代码改成<link rel="stylesheet" typ

小白的进阶之路7

注解: 昨天学了配置文件,感觉还不错,确实之前new的方式好了很多,今天继续学习注解. OK,开始进的入门案例 第一步,配置扫描注解, 注意:其中base-package  后面的参数是应new的对象所在包. 第二步,在需要注解的实体类加上注解. 第三步 就是和之前一样.... 根据刚才的小例子,我测试了一下,发现了有错误,but-我语法没错啊... 在我各种调试之后发现,缺个jar包,只有配置文件的六个jar包是不够的,  jar包害死人啊!还有需要一个aop的jar包. @component

小白的进阶之路12

---恢复内容开始--- 昨天上午弄了一个简单的页面,就是关于客户管理系统,想着实现保存功能,可是问题卡在页面跳转上,从输入信息页面就是跳不到saveservlet,将用户属兔的信息用表单传给servlet,然后servlet读取后,用map封装到一个customer对象中,算了不多说,看代码. 然后今天我一生气,直接省略了页面传值这一步骤, 下面是service层. 最后是dao层 打开Tomcat,输入框输入 刷新数据库,得到了想要的结果. 如果其中出异常呢???打印结果将会发生变化,因为这

小白的进阶之路13

昨天说到了级联保存,那么什么是级联保存. 我们都知道,双向保存就是customer和linkman都要保存,那么单项保存呢?单向保存就是只保存一方,而不需要保存另一方,但是这样会出异常,这是就需要级联保存 只需要保存customer,会自动的将linkman保存到数据库中. 级联保存室友方向性的,保存客户级联联系人,保存联系人级联客户. 说道数据库,不得不承认,数据库是我的弱项,我今天想好好地补一下,然后再继续hibernate. 首先要知道:SQL是结构化查询语言:structure quer

小白的进阶之路14

---恢复内容开始--- servlet 是Javaweb的三大组件之一. 三大组件:servlet,filter,lisoner 客户端通过服务器想浏览器发出请求. 我们所写的AServlet.BServlet,都是由我们实现servlet接口的实现类. servlet是单例的,一个类一个servlet,他们的功能是不同的.但他是线程不安全的,而且效率是高的.有可能出现一个servlet处理同时处理多个请求,所以最好不要在servlet中随便创建成员变量,有可能出现一个线程是读操作,另一个线程

小白的进阶之路16

cookie:是服务器产生保存到浏览器,是http协议制定的,下一次浏览器在请求服务器时,浏览器将上一次访问产生的cookie在还给服务器. cookie是一个键值对,服务器保存cookie的响应头. cookie不能跨浏览器. cookie的属性:name:value,还有一个是生命周期,即maxage:<0; 表示cookie只在浏览器的内存中存在,浏览器进程结束,cookie则死亡. =0;访问浏览器时则死亡. >0:可以自己设置时间. 跨域cookie:比如在百度登录账号后,在百度云中

小米面经-技术岗(编程小白如何进阶)

先介绍下背景,我本科专业是硬件转软件方面,所以一开始算法基础比较差,没有做过系统设计,为了能得到好的面试机会,我一直都有努力准备,还在网上关注了各种能提高编程能力的攻略,我觉得打好基础的前提是要找到优质的学习资源,这样才能事半功倍,切忌在网上搜一些质量参差不齐的题去练习,有的连答案都不知道对不对,更别提对面试有帮助了. 我对比了几家刷题的网站,最后选了Lintcode(http://www.lintcode.com/).题目基本上涵盖了所有IT公司面试会面到的算法题,推荐给想刷题的小伙伴们,建议