Spring 通过DAO 模式,提供了对iBATIS 的良好支持。SqlMapClient对象是 iBATIS 中的主要对象,我们可以通过配置让 spring 来管理 SqlMapClient对象的创建。 与 hibernate 类似,Spring 提供了SqlMapClientDaoSupport 对象,我们的DAO 可以继承这个类,通过它 所 提供的SqlMapClientTemplate 对象 来 操 纵 数 据 库 。 看 起 来 这 些 概 念 都 与hibernate 类似。 通过SqlMapClientTemplate 来操纵数据库的CRUD 是没有问题的,这里面关键的问题是事务处理。Spring 提供了强大的声明式事务处理的功能,我们已经清楚 hibernate 中如何配置声明式的事务,那么在 iBATIS 中如何获得声明式事务的能力呢? 第一,我们需要了解的是 spring 通过AOP 来拦截方法的调用,从而在这些方法上面添加声明式事务处理的能力。典型配置如下:applicationContext-common.xml
这些事务都是声明在业务逻辑层的对象上的。 第二,我们需要一个事务管理器,对事务进行管理。 此后,我们需要让 spring 来管理 SqlMapClient对象: