基于aspectj的注解aop
-
使用注解方式实现aop操作
- 创建对象
- 在spring核心配置文件中,开启aop操作
-
在增强类上面使用注解完成aop操作
Spring的jdbcTemplate操作
-
spring框架一站式框架
- 针对javaee三层,每一层都有解决技术
- 在dao层,使用jdbcTemplate
-
spring对不同持久化技术进行了封装
- jdbcTemplate对jdbc进行封装
-
jdbcTemplate使用和dbutils使用很相似,都对数据库进行了crud操作
增加
- 导入jdbcTemplate使用的jar包,还有数据库驱动
- 创建对象,设置数据库信息
- 创建jdbcTemplate对象,设置数据源
- 调用jdbcTemplate对象里的方法实现操作
更新
删除
查询
- 使用jdbcTemplate查询与dbutils相似
-
查询具体实现
-
查询返回某一个值
jdbc基本实现
-
查询返回对象
第一个参数是sql语句
第二个参数是RowMapper是接口
第三个参数是可变参数
-
查询返回list集合
- sql语句
- RowMapper接口,自己写类实现数据封装
- 可变参数
-
Spring配置连接池和dao使用jdbcTemplate
-
Spring配置层c3p0连接池
-
导入jar包
-
创建spring配置文件,配置连接池
- 把代码在配置文件中配置
-
-
dao使用jdbcTemplate
- 创建service和dao,配置service和dao对象,在service注入dao对象
- 创建模版对象,把模版对象注入到dao对象
- 在jdbcTemplate里注入dataSource
Spring的事务管理
事务概念
-
什么是事务
事务是单个的工作单元。如果某个事务成功,则在该事务中进行的所有数据更改均会提交,成为数据库中的永久组成部分。如果事务遇到错误且必须取消或回滚,则所有数据更改均被清除。一个逻辑工作单元必须有ACID属性,只有这样才能成为一个事务。
-
事务特性
acid
1.原子性
事务必须是原子工作单元。对于其数据修改,要么全都执行,要么全都不执行。
2.一致性
事务在完成时,必须使所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。事务结束时,所有的内部数据结构都必须是正确的。
3.隔离性
由并发事务所做的修改必须与任何其他并发事务所做的修改隔离。事务识别数据时数据所处的状态,或者是另一个并发事务修改它之前的状态,或者是第二个事务修改它之后的状态,事务不会识别中间状态的数据。这称为可串行性,因为它能够重新装载起始数据,并且重播一系列事务,以使数据结束时的状态与原始事务执行的状态相同。
4.持久性
事务完成之后,它对于系统的影响是永久性的。该修改即使出现系统故障也将一直保持。 -
不考虑隔离性产生读问题
脏读,虚读,坏读
-
解决读问题
- 设置隔离级别
Spring事务管理api
-
spring事务管理两种方式
- 编程式事务管理(不用)
- 声明式事务管理
- 基于xml配置文件实现
- 基于注解实现
-
spring事务管理api介绍
- spring针对不同dao层框架,提供接口不同的实现类
- 首先配置事物管理器
搭建转账环境
-
创建数据库,添加数据
-
创建service和dao类,完成注入关系
- service层又叫业务逻辑层
- dao层,单独对数据库操作层,在dao层不添加业务
-
产生问题:
- 如果小王少了1000之后,出现异常,小马不会多1000,钱丢失了
-
解决:
- 添加事物解决,出现异常出现回滚操作
声明式事务管理(XML配置)
-
配置文件方式使用aop思想配置