1.spring对持久层的支持在于,得到数据库连接之后操作上的封装,将操作简化了。也就是说以后操作sql语句就用XXXTemplate(就是一个工具类)对象了。
2.数据库连接池的作用只在于得到数据库的连接,并对数据库的连接做管理,不涉及到得到连接后的操
所以,spring对持久层的支持的XXXTemplate类是属于spring包下的,是spring的支持。但是数据库连接池的获取连接的数据源对象XXXDataSource对象是在第三方包内的,比如c3p0和dbcp包
3.所以不同的XXXTemplate可以和不同的数据连接池(数据源)结合
-----
使用xxxTemplate对象的方式有俩种:
1)直接将xxxTemplate对象当中成员变量放在具体的Dao中,并在Dao的ioc配置中注入已经在xml中配置好的xxxTemplate。
2)用具体的Dao继承xxxDaoSupport,在有getTmeplate获得xxxTemplate对象使用,同时需要在Dao的ioc配置中,注入dataSource数据源。相比上一个方法,少了个xxxTemplate的配置。如果用注解的方式还是要通过set方法来注入dataSource的
事务相关:
参看链接:
https://www.ibm.com/developerworks/cn/education/opensource/os-cn-spring-trans/
xxxTemplate默认是不开启事务的,那如果要开启事务,就要通过 XXXTransactionManager 事务管理器来管理,通过操作PlatformTransactionManager、TransactionDefinition 和 TransactionStatus对象来实现事务控制。同时为了简化事务管理器的操作,spring提供了TransactionTemple工具类。
编程式事务处理有代码侵入性,所有开发中推荐使用声明式事务处理
因为声明式事务处理的实现原理是aop,所有声明式的事务处理的方式和aop一样也经历了几个时期