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());

}

2、在xml中指定spring读取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、开启注解管理事务:

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层处理事务逻辑变得简单。

沈阳治疗性病医院哪家权威:http://www.lnjk120.com/

沈阳专业治疗疱疹医院:http://www.sdjk99.com/

猜你喜欢

转载自blog.csdn.net/a13804947436/article/details/84368916
今日推荐