Spring为不同持久化技术所提供的模板类
Spring为各种支持的持久化技术都提供了简化操作的模板和回调,在回调中编写具体的数据操作逻辑,使用模板执行数据操 作,在Spring中,这是典型的数据操作模式。下面,我们来了解一下Spring为不同的持久化技术所提供的模板类。
表 3 不同持久化技术对应的模板类
ORM持久化技术 模板类
JDBC org.springframework.jdbc.core. JdbcTemplate
Hibernate org.springframework.orm.hibernate.HibernateTemplate
Hibernate 3.0 org.springframework.orm.hibernate3.HibernateTemplate
iBatis org.springframework.orm.ibatis.SqlMapClientTemplate
JPA org.springframework.orm.jpa.JpaTemplate
JDO org.springframework.orm.jdo.JdoTemplate
TopLink org.springframework.orm.jpa. JpaTemplate
如果你使用JDK 5.0或以上版本,则可以使用jdbc.core.simple.SimpleJdbcTemplate的模板类,该模板类使用了泛型和不定入数的技术,使模板的功能更加强大,更易于使用。
如果,我们直接使用模板类,一般都需要在DAO中定义一个模板对象并提供数据资源,Spring为每一个持久化技术都提供了支持类,支持类中已经为我们完成这样的功能。这样,我们只需要扩展这些支持类就可以直接编写实际的数据访问逻辑,没有须臾的阻隔。
不同持久化技术的支持类如表 4所示:
| ORM持久化技术 | 支持类 |
| JDBC | org.springframework.jdbc.core. JdbcDaoSupport |
| Hibernate | org.springframework.orm.hibernate.HibernateDaoSupport |
| Hibernate 3.0 | org.springframework.orm.hibernate3.HibernateDaoSupport |
| iBatis | org.springframework.orm.ibatis.SqlMapClientDaoSupport |
| JPA | org.springframework.orm.jpa.JpaDaoSupport |
| JDO | org.springframework.orm.jdo.JdoDaoSupport |
| TopLink | org.springframework.orm.jpa. JpaDaoSupport |
表 4 持久化技术的支持类
ORM持久化技术 支持类
JDBC org.springframework.jdbc.core. JdbcDaoSupport
Hibernate org.springframework.orm.hibernate.HibernateDaoSupport
Hibernate 3.0 org.springframework.orm.hibernate3.HibernateDaoSupport
iBatis org.springframework.orm.ibatis.SqlMapClientDaoSupport
JPA org.springframework.orm.jpa.JpaDaoSupport
JDO org.springframework.orm.jdo.JdoDaoSupport
TopLink org.springframework.orm.jpa. JpaDaoSupport
这些支持类都继承于dao.support.DaoSupport类,DaoSupport实现了InitializingBean接口,在afterPropertiesSet()接口方法中检查模板对象和数据源是否被正确设置,否则将抛出异常。
所有的支持类都是abstract的,其目的是希望被继承使用,而非直接使用。
小结
Spring 支持目前大多数常用的数据持久化技术,Spring定义了一套面向DAO层的异常体系,并为各种支持的持久化技术提供了异常转换器。这样,我们在设计DAO接口时,就可以抛开具体的实现技术,定义统一的接口。
不管采用何种持久化技术,访问数据的流程是相对固定的。Spring将数据访问流程划分为固定和变化两部分,并以模板的方式定义好流程,用回调接口将变化的部分开放出来,留给开发者自行定义。这样,我们仅需要提供业务相关的逻辑就可以完成整体的数据访问了。Spring为了进一步简化持久化模板类的调整,为各种持久化技术提供了使用模板的支持类,支持类不但包含数据访问模板,还包含数据源或会话。通过扩展支持类定义自己的数据访问类是最简单的数据访问方式。