五、Spring 持久层
对于不同的数据库技术,某些步骤是固定的,只有少部分不同。Spring运用Template Method模式,将固定的流程编写与Temp类(JdbcTemplate、HibernateTemplate)之中,对不同的一些细节步骤,依托特定DAO支持对象来处理。
Spring的DAO框架并不抛出与数据库技术相关的异常,Spring所有异常都是DataAccessException的子类,一个与数据库技术无关的通用异常类,该类继承至RuntimeException。
对于Jdbc存取,Spring将SQLException等转化为自己的DAO异常对象。
DataSource注入
对于不同的数据库链接来源需求,Spring提供了javax.sql.DataSource注入,更换数据来源只需在Bean定义文件中修改配置,不需修改程序代码。 例如可以在Bean文件中编写如下:
要建立JdbcTemplate的实例,
使用JdbcTemplate
JdbcTemplate封装了Connection的取得,Statement的建立,异常的处理,Statement的关闭,Connection的关闭等。它被设计为线程安全的。
要建立JdbcTemplate的实例,必须要有一个DataSource对象作为构造对象。
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
Spring事务管理
Spring提供编程式事务管理与声明式事务管理。
编程式事务管理
Spring提供了两种方式实现编程式事务管理:使用PlatformTransactionManager实现;使用org.springframework.transaction.support.TransactionTemplate。
PlatformTransactionManager接口定义如下:
DataSourceTransactionManager是其一个实现类。
修改添加新用户的代码段作为示例:
另一个编程式事务管理方法是使用TransactionTemplate,它需要一个TransactionManager实例,如下:
声明式事务管理
Spring的声明式事务管理依赖于它的AOP框架来完成,使用声明式的事务管理的好处是,事务管理不侵入开发的组件。
定义文件如下:
Powered by: BlogJava Copyright © codingliyi