Spring整合JDBC、Spring的AOP事务开发、Spring注解整理

Spring整合JDBC:  

Spring提供了根据JDBC可以操作数据库的对象。该对象封装了JDBC的操作。同QueryRunner对象类似。

该对象:JDBCTemplate(JDBC模板对象)

Spring提供的持久层技术有:JDBC、Hibernate3.0、IBatis(MyBatis)、JPA,etc.

流程:

1. 导包:

4+2、spring-jdbc、spring-tx、数据库驱动、连接池、spring-test、spring-aop、junit4(后面的测试)。

2. 将写好的Dao实现类配置到Spring容器中

003VxnK9zy79oxXA0j48e&690

3. 即可简单测试SpringJDBC。

 

JDBCTemplate常用API:

jdbcTemplate.update(sql,params..) 增删改

jdbcTemplate.queryForObject(sql,rowMapper,params..) 将一行查询结果封装成对象

jdbcTemplate.queryForObject(sql,Class,params..) 将一个想要的结果,以指定类型返回

jdbcTemplate.query(sql,rowMapper,params..) 将多行结果分别封装到对象,并以List集合返回

 

JDBCDaoSupport类:(Dao继承)

JDBCDaoSupport可以帮助我们根据DataSource创建模板对象。

则依赖关系由   DataSource->JDBCTempalte->Dao,

变成   DataSource->Dao extends JDBCDaoSupport

此时配置:

 

将连接信息放置外部properties配置中:

1. 一般src目录下准备xx.properties文件

2. 读取该配置文件:

使用context的标签property-placeholder

location(属性)="classpath:配置文件全路径"

3. 在DataSource的配置中:

003VxnK9zy79oxYLtGi5a&690

 

 

SpringAOP事务原理:

Spring提供接口:开启事务、提交事务、回滚事务方法。

平台事务管理器:PlatformTransactionManager

实际使用,根据选择的实现方式,配置不同的事务管理器的class

真正管理事务的对象:

DataSourceTransactionManager   使用SpringJDBC或iBatis进行持久化数据时

HibernateTransactionManager   使用Hibernate进行持久化时

 

事务属性:

事务隔离级别:

是否只读:

事务传播行为:

为xxx异常回滚

不为xxx异常回滚

 

事务隔离级别:即数据库的4个级别,1248(一个二进制字节表示)

是否只读:true/false

传播行为:在业务方法平行调用时,指定事务如何处理的属性。

PROPAGATION_REQUIRED(默认):支持当前事务,没有则新建一个事务。保证业务处在事务控制下。

……

 

 

SpringAOP事务流程(XML):   

1. 导包

4+2、spring-jdbc、spring-tx、数据库驱动、c3p0连接池、spring-aop、spring-aspects、aop联盟、 aspectJ织入、spring-test、junit4

2. 准备Dao:准备实际操作数据库的Dao

3. 准备Service:事务内的业务操作。

4. Spring配置注入:

003VxnK9zy79oy06TFJ07&690

5. 配置事务管理器:

003VxnK9zy79oy0XlaC4e&690

6. 配置事务通知:

先引入tx命名空间,tx(事务)约束。Spring解压目录下

003VxnK9zy79oy1E0HXb5&690

7. 配置织入

003VxnK9zy79oy2iSr234&690

8. 测试:以Spring整合的Junit4、定义私有的属性Service对象来测试。

 

 

SpringAOP事务流程(注解):

1-5步,同上。

6. 开启注解管理事务"开关"

tx约束的annotation-driven标签,

transaction-manager(属性)="第5步配置的事务管理器的name"

7. 在Service中书写注解 来管理事务

003VxnK9zy79oy38GAWca&690


003VxnK9zy79oy3Bt0od4&690

8. 测试:

 

 

Spring注解整理:  

注解注册Bean:

1. 开启:

打开注解开关:

context约束的component-scan,base-package(属性)="包名",表示该包下所有子包中类的注解

2. 注解:

类上:@Component、@Controller、@Service、@Repository,表示作用域@Scope

方法上:初始化@PostConstruct,销毁@PreDestroy

属性值类型注入:@Value

属性引用类型注入:@Autowired、@Qualifier、@Resource(name="Bean中的name")

 

Spring整合Junit4测试:

1. 不需要"开关"配置,导包即可

2. @RunWith(SpringJunit4ClassRunner.class)、@ContextConfiguration("classpath:配置文件路 径")、@Resource、@Test

Spring中的AOP开发(主要给下面的AOP事务铺垫):

1. 开启

aop约束的aspectJ-autoproxy标签

2. 注解:

类上:@Aspect

方法:@Before、@Around、@After-Returning、@After、@After-Throwing

抽取切点表达式:@PointCut(execution(* xxx.xxx.*xxx.*(..)))

Spring中的AOP事务:

1. 开启:

tx约束的annotation-driven标签,transaction-manager(属性)="transactionManager"

2. 注解:

类上或方法上:@Transactional(isolation=Isolation.REPEATABLE_READ,

readOnly=true,propagation=Propagation.REQUIRED)

 

 

 

 

 

 

待续……

转载于:https://my.oschina.net/u/3392125/blog/869336

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值