Spring数据库访问及事务管理(四)

本文介绍了Spring中的JDBC,它是对JDBC编码的简单封装,Spring提供了JdbcTemplate操作模板。还阐述了常用数据源,如DriverManagerDataSource、DBCP、C3P0等。此外,详细讲解了Spring中的事务管理,包括主要接口、事务管理器实现,以及编程式和声明式事务管理的方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、Spring中的JDBC
只是对JDBC编码进行了薄薄的封装,不是框架。类似工具DBUtil。是一种DAO设计模式的应用
2、导入jar包
目前只是用:SPring+JDBC(暂时不管Hibernate的事情)
在这里插入图片描述
3、Spring提供了一个JDBC操作模板
JdbcTemplate:类似DButil中的QueryRunner

方式一:
在这里插入图片描述
在这里插入图片描述
方式二:
在这里插入图片描述
在这里插入图片描述
方式三:
在这里插入图片描述
在这里插入图片描述

4、Spring中的数据源
常用的数据源
Spring数据源实现类 DriverManagerDataSource:Spring内部的
在这里插入图片描述
DBCP数据源 BasicDataSource
拷贝dbcp的jar包:
commons-dbcp.jar commons-pool.jar
在这里插入图片描述
C3P0数据源 ComboPooledDataSource
拷贝c3p0的jar包:
在这里插入图片描述

针对老系统:
老系统,一般把数据库配置信息放在properties文件中
在这里插入图片描述
在这里插入图片描述

5、Spring中的JdbcTemplate(JdbcDaoSupport)进行数据库操作
在这里插入图片描述
在这里插入图片描述

6、Spring中的事务管理
6.1、主要的事务有关接口
PlatformTransactionManager:事务管理器
TransactionDefinition:事务的定义信息
隔离级别:
在这里插入图片描述

TransactionStatus:事务的状态信息
6.2事务管理器的实现
DataSourceTransactionManager:用于JDBC事务管理和MyBatis事务管理。
HibernateTransactionManager:用于Hibernate事务管理器(注意使用的Hibernate版本)

6.3Spring中配置事务管理器
准备之前的转账代码:见 day35_03_springTx(01tx)
编程式事务管理:(了解)
在业务代码中编写事务代码。
在这里插入图片描述
在这里插入图片描述

类似环绕通知,采用AOP的思想解决。

声明式事务管理:
采用AOP编程思想,通过配置文件进行织入。

引入tx和aop的名称空间。注意导入AOP有关jar包。

方式一:采用XML
在这里插入图片描述

tx:method的属性:
name:定义了参与事务的方法,可以使用通配符。save,update*
timeout:定义事务的超时时间。默认-1,永不超时
read-only:是否是只读事务、读写事务。默认是读写事务 true|false(默认)
no-rollback-for:指定一个异常的名称。如果遇到此异常,事务不会滚。写异常的全名
rollback-for:指定一个异常名称。如果遇到此异常,一定要回滚。
isolation:指定事务的隔离级别。
propagation:指定事务的传播行为。
在这里插入图片描述

XXXService(){
public void m1(){
m2();
}
public void m2(){
//…
}
}
事务控制在业务逻辑层的所有方法上。

REQUIRED:
m1():开启一个事务。m2就使用m1的。
m1():没有开启事务。m2就使用一个新的事务。
REQUIRES_NEW:
m1():开启一个事务。m2也会开启一个新的事务。
m1():没有开始事务。m2也会开启一个新的事务。
NOT_SUPPORTED:
m1():开启一个事务。m2没有事务。
m1():没有开始事务。m2没有事务。
SUPPORTS:
m1():开启一个事务。m2就使用m1的。
m1():没有开始事务。m2没有事务。
NEVER:
m1():开启一个事务。m2报错。
m1():没有开始事务。m2没有事务。
MANDATORY:
m1():开启一个事务。m2就使用m1的。
m1():没有开始事务。m2报错。

方式二:采用注解
在这里插入图片描述
在这里插入图片描述

注解加在类上
在这里插入图片描述
注解加在需要事务控制的接口上亦可
在这里插入图片描述

@Transactional中可以指定事务的属性
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值