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中可以指定事务的属性