打造企业微信点餐系统(5-1~4小节)
2022-11-24 20:02:03 欢乐点

第一模块:

课程名称: Boot打造企业微信点餐系统

章节名称:5-1 ~ 5-4

讲师姓名:廖师兄

第二模块:

内容概述:

5-1 ~ 5-4小节主要讲解了商品的DAO、以及对应的API

第三模块:

学习心得:

13 数据库事务篇1:事务管理器和事务约定

事务:要么不做,要么就做完;作用:保证数据在一个业务流程中的一致性这里存在一个矛盾:提高数据库一致性往往也会造成并发能力的下降,从而影响到网站的性能,尤其对于那些拥有大量用户的网站在抢购商品的时候,往往还需要考虑系统的性能,以提高用户体验。

编程中事务有两种实现方式:编程式事务、声明式事务;

编程式事务就是程序员自己通过编码来实现事务这个功能,而声明式事务就是引用别人写好的事务逻辑,我们通过“一定”的方式拿来用,一样可以实现事务这个功能;

点餐系统_棉花糖点餐系统_易盘智慧点餐系统

现在的主流开发都是使用声明式事务,来实现“数据库一致”。

中声明式事务的核心是:事务管理器和注解@点餐系统,通过这个注解就可以配置事务,这个注解可以使用在类或者方法上。

声明式事务的原理:首先需要配置事务管理器,这个 Boot会帮助我们完成,我们不用管, Boot会自动装配“通用的增强模块”来减少我们的开发任务,让我们专注于个性化的业务逻辑!!!

中存在多种事务管理器,不过它们都需要实现接口,但是这只是一个接口非实现类,这里因为依赖了的包,这样 Boot就会装配;

接口的源码:

解析:

数据库流程约定:

所以,事务拦截器的作用是:将事务管理器接口定义的三个方法织入到事务拦截器的流程中去(实现技术是:动态代理)

解析:

获取事务()这步就可以设置一些我们配置的属性,比如隔离级别、异常类型;然后就可以执行业务方法了,而这些业务方法就是我们所编写的个性业务逻辑代码;执行业务方法的过程可能正常,也可能发生异常,如果发生异常且满足事务配置,则会走到回滚事务()这步;如果一切正常或者异常是事务配置允许的,则会提交事务()。由于获取事务、回滚和提交这三步是事务拦截器把事务管理器的方法织入到“事务处理流程”,所以并不需要我们编写任何代码,而我们仅仅需要通过@告知哪个类或者方法需要事务即可。@可以标注在类或者方法上,如果是类,则对所有且非静态的方法有效;如果是方法,则只对方法有效。

补充:

易盘智慧点餐系统_点餐系统_棉花糖点餐系统

动态代理:想要给实现了某个接口的类中的方法,加一些额外的处理逻辑,比如说加日志,加事务等;此时就可以给这个类创建一个代理,故名思议就是创建一个新的类点餐系统,这个类不仅包含被代理类的所有方法的功能,而且还在原来的基础上添加了额外的处理逻辑,另外,这个代理类并不是事先定义好的,而是动态生成的,如此就具有解耦的意义,灵活,扩展性强的特点;动态代理的代理类不是在Java代码中定义的,而是在运行时根据我们在Java代码中的“指示”动态生成的。

静态代理:代理类在程序运行前就已经存在,那么这种代理方式被成为静态代理

所以,基于反射实现的IOC和基于动态代理实现的AOP,他们的区别其实一句话就能总结出来:IOC中存在的是bean,而bean就是一个类的总代理,注意这个代理仅仅只是代理,没有对bean做什么逻辑增量,来增强这个bean;但是AOP的动态代理一般会对代理类做逻辑增量,来增强代理类能的功,这些功能一般都是些通用功能,比如:日志,事务,权限等通用的功能。

注解@源码:

解析:

value和都是指定一个Bean Name(bean与其所代理的类在逻辑功能上完全一致,IOC做的只是接管一个类,并没有给这个类做逻辑增强 ),来确定你使用的是哪个事务管理器,默认值是“”。对于超时时间()和只读事务()相信也比较好理解。剩下的是指定在发生哪种异常下回滚事务;指定回滚事务的异常名称;是指定在哪种异常下不回滚事务;me指定的是不回滚事务的异常名称。

注意:

数据库事务流程是通过 AOP实现的,而 AOP则是通过动态代理技术实现的,在某些情况下@会失效!!!

第四模块:

学习截图:

免责声明:部分文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性,如本站文章和转稿涉及版权等问题,请作者在及时联系本站,我们会尽快为您处理。

欢乐点

留言咨询

×