Spring的JDBC模板
- JDBC模板
- 什么是JDBC模板
- 创建项目
- 测试
- IOP-DI改写
- CRUD操作
- 事务操作
- Spring的事务管理的API
- 各API之间的联系
- 事务的传播行为
- 事务使用
01
JDBC模板基本使用
SpringJDBC模板是什么?
Spring是EE开发的一站式的框架,有EE开发的每层的解决方案。
Spring对持久层也提供了解决方案:ORM模块和JDBC的模板。
Spring提供了很多的模板用于简化开发,有基础的JDBC模板相当于DBUtils,使用Hibernate也有简化使用Hibernate的模板
创建项目
Spring基础包
JDBC模板包及数据库驱动包
创建数据库和表
测试类使用模板
成功插入
02
使用IOC-DI
上面测试代码中有两处创建对象
将他们交给Spring来创建
使用注解
还可以将数据库信息使用属性配置文件
jdbc.properties
加载属性配置文件,再使用el表达式引用
03
CRUD操作
插入
删除
修改
查询单字段
单行记录(封装对象)
多条(封装集合)
04
事务操作
Spring的事务管理的API
1.PlatformTransactionManage
平台事务管理器 是一个接口,下面有两个实现类
DataSourceTransactionManager
底层使用JDBC管理事务
HibernateTransactionManager
底层使用Hibernate管理事务
2.TransactionDefinition
事务定义信息:用于定义事务的相关的信息,隔离级别、超时信息、传播行为、是否只读
3.TransactionStatus
事务状态:用于记录在事务管理过程中,事务的状态的对象。
各API之间的联系
Spring进行事务管理的时候,首先平台事务管理器根据事务定义信息进行事务的管理,
在事务管理过程中,产生各种状态,将这些状态的信息记录到事务状态的对象中。
事务的传播行为
意思是在事务中又调用了其他方法,而方法中也包含事务,事务中包含事务
Spring中提供了了七种方式处理传播行为
保证多个操作在同一个事务中 | PROPAGATION_REQUIRED | 默认值,如果A中有事务,使用A中的事务,如果A没有,创建一个新的事务,将操作包含进来 |
---|---|---|
PROPAGATION_SUPPORTS | 支持事务,如果A中有事务,使用A中的事务。如果A没有事务,不使用事务。 | |
PROPAGATION_MANDATORY | 如果A中有事务,使用A中的事务。如果A没有事务,抛出异常。 | |
保证多个操作不在同一个事务中 | PROPAGATION_REQUIRES_NEW | 如果A中有事务,将A的事务挂起(暂停),创建新事务,只包含自身操作。如果A中没有事务,创建一个新事务,包含自身操作。 |
PROPAGATION_NOT_SUPPORTED | 如果A中有事务,将A的事务挂起。不使用事务管理。 | |
PROPAGATION_NEVER | 如果A中有事务,报异常 | |
嵌套式事务 | PROPAGATION_NESTED | 嵌套事务,如果A中有事务,按照A的事务执行,执行完成后,设置一个保存点执行B中的操作,如果没有异常,执行通过,如果有异常,可以选择回滚到最初始位置,也可以回滚到保存点 |
使用事务
编程式事务
配置事务管理和事务管理模板
使用
xml配置事务(aop给方法增强事务)
配置事务通知,再配置aop给transferMoney方法添加通知
注解方式
annotation-driven开启注解方式,传入事务平台管理器,在业务类上开启注解
无论哪一种首先将事务管理器交给Spring