SpringJDBC整合及Aop事务处理

SpringJDBC整合及Aop事务处理

1、JdbcDaoSupport

​ 可用DaoImpl的类直接继承,这样就不需要手动准备Jdbc模板,从父类方法中获得即可,它实现原理是根据DataSource来实现的。`

public class UserDaoImpl extends JdbcDaoSupport implements UserDao{

	//JdbcDaoSupport  根据连接池来创建JdbcTemplate

	@Override

	public void save(User user) {

		String sql = "insert into user values(?,?)";

		super.getJdbcTemplate().update(sql,user.getUsername(),user.getPassword());

	}

1542196493723

2、在xml中指定spring读取db.properties配置

<context:property-placeholder location=“classpath:db.properties” />

相对应的db.properties内容如下:(之所以前面加个jdbc是防止跟数据库表名一致导致冲突)

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test
jdbc.username=root
jdbc.password=123456


根据依赖用spring来创建对象步骤:
在这里插入图片描述

3、spring中aop事务

在这里插入图片描述
事务特性:acid

事务并发问题:脏读 、不可重复读、幻读

注意:在spring中玩事务管理.最为核心的对象就是TransactionManager对象

事务传播行为:有七个,通常默认是PROPAGATION_REQUIRED(支持当前事务,如果不存在,就新建一个)

4、spring管理事务的方式

无论进行以下哪种配置,都需要在spring容器中配置事务核心管理器,有datasource.DataSourceTransactionManager或者HibernateTransactionManager,该对象依赖于连接池。

1、xml配置(aop)

导包:基本4+2 +aop+ aspect+ aop联盟 + weaving织入包

导约束:beans: 最基本 context:读取properties配置 aop:配置aop tx:配置事务通知

配置事务管理器:

配置通知:

在这里插入图片描述
配置将通知织入目标对象:
在这里插入图片描述

2、注解配置(aop):

1、导包、导约束
2、配置事务管理器

3、开启注解管理事务:

<tx:annotation-driven/>

4、在需要使用的事务的方法使用注解:

//如果想对类中所有方法都应用,可将注解加在类上,如果相对某个方法进行修改,在方法上重新写一个
@Transactional(isolation=Isolation.REPEATABLE_READ,propagation=Propagation.REQUIRED,readOnly=true)
public class AccountServiceImpl implements AccountService {
	
	private AccountDao ad;
	@Transactional(isolation=Isolation.REPEATABLE_READ,propagation=Propagation.REQUIRED,readOnly=false)
	public void transfer(Integer from, Integer to, Double money) {
		ad.decreaseMoney(from, money);
		int i=1/0;
		ad.increaseMoney(to, money);
	}

	public void setAd(AccountDao ad) {
		this.ad = ad;
	}

}

最终在demo中测试转账,成功;并在出现异常时可以保持数据的一致性。
在这里插入图片描述

5、总结:

通过这个转账的小例子,比较深入理解了spring的两大特性,控制反转和面向切面,即spring可以很方便的解决对象创建时的依赖问题,而且在需要创建对象的时候才创建,极大方便了开发;而aop更是对事务操作带来了很大的便利,让service层处理事务逻辑变得简单。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值