spring对不同的持久化层技术都进行封装
使用jdbcTemplate的过程
1 导入jdbcTemplate使用的jar包(第二个包与事务相关的包)
2 创建数据源对象,设置数据库信息
3 创建jdbcTemplate对象,设置数据源
4 调用jdbcTemplate对象里面的方法实现操作、
实现CRUD代码
-
增加(修改、删除操作都是调用update方法,因此这里不列举)
-
查询
1. 返回基本数据类型
2. 返回对象
第一个参数是sql语句
第二个参数是 RowMapper,是接口,类似于dbutils里面接口,需要开发者实现该接口,完成对象的映射操作
第三个参数是 可变参数
Spring配置连接池和dao使用jdbcTemplate
1. spring配置c3p0连接池
2. dao使用jdbcTemplate
创建jdbcTemplate对象,把模板对象注入到dao里面,dataSource对象注入到jdbcTemplate对象中
Spring事务管理
-
事务特性(ACID)
原子性(Atomicity):事务是数据库的逻辑工作单位,事务中包括的诸操作要么全做,要么全不做。
一致性(Consistency):事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
隔离性(Isolation): 一个事务的执行不能被其他事务干扰。
持续性/永久性(Durability):一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。
-
事务隔离级别
事务的隔离级别有4种,由低到高分别为Read uncommitted 、Read committed 、Repeatable read 、Serializable 。而且,在事务的并发操作中可能会出现脏读,不可重复读,幻读。关于事务隔离级别的详细说明参考文章:http://blog.csdn.net/qq_33290787/article/details/51924963
大多数数据库默认的事务隔离级别是Read committed,比如Sql Server , Oracle。MySQL的默认隔离级别是Repeatable read。
-
Spring的事务管理实现
Spring的事务管理提供了一个统一的接口Platformtransactionmanager接口,针对不同的持久化技术提供了不同的实现类。
-
spring事务管理两种方式
-
编程式事务管理(不用)
- 这种方式就是在代码中去编写事务控制的代码,虽然介入了业务代码,但是在某些情况下也是有必要的,而这种事务管理依赖的累就是:org.springframework.transaction.support.TransactionTemplate。具体可参考文章:http://blog.csdn.net/honglei915/article/details/50849459
-
声明式事务管理(基于xml和基于注解两种形式)
-
-
声明式事务管理(xml配置)
配置文件方式使用aop思想配置
第一步 配置事务管理器
第二步 配置事务增强
说明:propagation=rerquired:支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。
第三步 配置切面
-
声明式事务管理(注解)
第一步 配置事务管理器
第二步 开启事务注解
第三步 在要使用事务的方法所在类上面添加注解@Transactional(在类上添加代表类中所有的方法都会受到事务的控制)