
aop联盟包、 aspectJ实现包 、 spring-aop-xxx.jar 、 spring-aspect-xxx.jar
导入约束
aop约束
托管扩展类和被扩展类
也可以使用注解来托管这两个类 。 @Component
在扩展出来的功能类身上和方法上打注解
为什么spring也要提供jdbc模板呢?
spring是属于service层的框架, 它所处的位置比较尴尬,并且它想让自己更受程序员的喜爱。 除了能够做好自己的核心 IOC & AOP , 它还对前后两个框架都提供了支持。 spring其实对dao层的大部分技术有提供模板支持 。
insert
delete
udpate
findCount
findObject
findList
查询要求我们手动封装class MyRowMapper implements RowMapper<User>{
该小节演练的是三层结构的所有属性注入写法。(不写action | servlet)
以下代码其实是位于dao层的
这套代码很多,而且它只是一个dao的操作代码而已。 如果我们还有别的dao方法。也要执行操作,那么必然也得写出来这样的代码。 那么就存在冗余代码了。
解决方案:
以前的解决方法:

?? 工具类 | 静态代码块
现在学了spring了,我想用spring的手法来简化dao的这一套代码。
??分析以上代码,其实它就是做了两个工作。
??a. 创建了jdbc模板的对象,并且完成了属性的赋值工作。
??b. 创建了dataSource 的对象,并且完成了属性的赋值工作。mybatis
spring也可以完成这个工作, 创建对象,其实就是`IOC`的体现, 对属性的赋值工作其实就是`DI`的体现
service
dao
xml
导入jar包
c3p0-0.9.5.2.jarmchange-commons-java-0.2.12.jar
在xml中配置
为了方便修改连接信息,通常在src下使用properties文件来记录他们。主要是方便修改
在src下新建一个properties文件,内容如下 名:jdbc.properties
在xml里面导入jdbc.properties ,并且在dataSource里面引用
什么事务,事务有什么用?
事务是用于包装一组操作的。当这一组操作里面的所有步骤都执行成功,那么这一组操作就算成功(事务的提交),如果有哪一个步骤执行失败,那么这一组操作就以失败告终。(事务的回顾)
事务的特性
原子性、一致性 、隔离性、持久性
如果不考虑隔离级别,那么事务并发会出现以下问题
读的问题
?? 脏读 : 读到了另一个事务还没有提交的数据

?? 不可重复读 : 读到了另一个事务已经提交的数据 (针对的是update的数据)
?? 虚读| 幻读 : 读到了另一个事务已经提交的数据(针对的是insert的数据)
解决方案: 设置隔离级别
?? 读未提交
?? 读已提交 Oracle
?? 可重复读 MySql
?? 序列化|串行化
写的问题
?? 丢失更新: 最后操作的事务,不管是提交还是回滚,都会让前一个是的数据丢失掉。
解决方案:
?? 悲观锁 : 还没开始就认为一定会丢失更新。mybatis
?? 每一个事务在执行操作之前,先进行一次查询。 并且查询的语句里面带有关键字 for update
?? 乐观锁 : 认为不会出现丢失更新,
?? 要求程序员手动控制,给表额外添加一个字段 如: version。
事务应该写在哪一层? 为什么spring也要插手管理事务?
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-86071-1.html
也是够了