Spring ORM的设计与实现
<应用场景>
java作为一种面向对象的语言,为面向对象原则(封装、继承、多态)的实现提供了语言及运行环境支持,然而,由于这些面向对象的原则是从软件工程的基础上发展而来的,与从数据理
论中发展起来的关系型数据库技术在基础上存在着很大的差异。因此,在利用java进行开发时,操作关系型数据库时有很大的不便,为了解决这些不匹配的问题,出现了ORM产品
较常用的ORM产品比如:Hibernate、 Mybatis、JPA 等
在通常情况下,可以直接使用ORM框架,比如使用Hibernate。但是在使用Hibernate的过程中,需要处理Session、SessionFactory等类外,还需要处理诸如事务处理,打开Session和关闭Session问题.这无疑增加了Hibernate的使用难度。
而Spring提供了Hibernate/Mybatis/Jpa等封装,如HibernateDaoSupport、HibernateTemplate、JpaDaoSupport、JdbcDaoSupport等,简化了繁琐的通用过程,使开发人员只关注数据,比如数据的查询/删除等。
<设计概要>
Spring ORM包为主流的ORM工具提供了封装支持,如熟知的Hibernate外还有Mybatis、JPA等。使用其提供的模板类(Tenpalte Class) ,Tempalte核心类的设计如下图:
在关系图中,可以看出DaoSupport是一个基类,在这个基类上,设计了各种相关的子类,比如:HibernateDaoSupport、HibernateTemplate、JpaDaoSupport、JdbcDaoSupport、SqlMapClientDaoSupport等