`
jiasudu1649
  • 浏览: 719490 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Spring对各种数据访问框架的集成机制

阅读更多
何为数据框架集成。
    数据访问框架原本好好的,Spring都干了什么呢?
    一是用template类封装了数据框架那些资源获取和异常事务处理的废话代码,而且按照自己的意见给出一些增强函数。
    二是将其纳入了Spring的声明式事务管理中。

     对比Spring对Hibernate、JDBC的集成,还有Spring Modules对O/R Broker的集成,发现Spring的DAO框架主要有六个类:
    1.Template
       著名的Template类,用callback机制封装了除业务代码外的所有必要但废话的代码,重新封装了数据框架的API,并再附送一些增强版。

    2.TransactionManager
       实现PlatformTransactionManager接口,数据访问框架就能与Spring的事务机制(TransactionTemplate或AOP声明式事务)结合。

     重要的类仅以上两个,以下的类都只有少量标准代码,完全可以忽略。
    3.DAOSupport
        实际DAO类的基类,负责保持template变量。如果你觉得它破坏了你的类层次结构,完全可以不用。
    4.Accessor
      template类的基类,defining common properties like DataSource and exception translator,也没大用。
    5.Operations
      template所实现的接口,定义template支持的数据访问函数和增强函数,template有多个实现时才有用。
    6.Exception Translate的相关类和函数
      异常翻译,Spring DAO很重视的一个功能。

Template类的代码
    因为Hibernate本身很复杂,所以HibernateTemplate也不适合畏高晕车的人士如我观看。JDBC简单很多,但JDBCTemplate又忙着增强JDBC的功能,多出好多代码。所以我选O/R broker的集成代码来看,代码一共才280行。
注:如果不熟O/R broker,可以简单的认为broker=connection, executable = statement ,其余一切同Jdbc。

1.1主干函数 Execute(BrokerCallback action)
       step1. 获得Connection-- connecton = datasource.getConn();
       step2. 准备Statement -- statement = new Statement(connection);
       step3. 执行Action的回调函数doInBroker(Statement)。这个doInBroker()方法由客户定义,会拿着传入的statement,执行种种操作。
                try
{
   action.doInBroker(statement );
}
catch()
{
   //翻译异常
}

   1.2 template的API函数
          虽然理论上大家可以直接使用execute(),在匿名内部类里调用数据访问框架的任何API。但java的匿名内部类不比闭包,代码难看无比,所以除了Robbin还没见到其他兄弟提倡直接用execute方法的。
         因此,template也对数据框架的API进行了wrap,封装了用execute(StatementCallback action)来执行这些API的函数,如下段就是wrap 了O/R Broker的execute(String statementID.....)方法:
public int execute(final String statementID, final String[] paramNames, final Object[] values) throws DataAccessException {
    return executeWithIntResult(new BrokerCallback() {
      public Object doInBroker(Executable executable) throws BrokerException {
         applyNamedParamsToExecutable(executable, paramNames, values);
        return new Integer(executable.execute(statementID));
       }
     });
   }

     另外还提供一些增强型、便利型的API(如selectOne() ,selectMany()),在参数、返回值上极尽变化。

TransactionManager的代码
    比较复杂,一下说不清。但JDBC的DatasourceTransactionManager和Hibernate的HibernateTransactionManager的代码都很相近,说明这个TransactionManager其实也比较固定埋头狂抄就是了。

     有兴趣的同学,可以响应某大老号召,实现ofbiz与spring的集成:)


http://hi.baidu.com/quxiling/blog/item/d117b722a66209f2d7cae2d7.html
分享到:
评论

相关推荐

    Spring数据访问对象框架入门

    Spring DAO框架集成了Spring的事务管理功能,支持编程式和声明式事务管理。声明式事务管理只需在配置文件或注解中定义事务边界,而无需在业务代码中显式调用开始和结束事务的方法,降低了代码的复杂度。 **4. 数据...

    基于spring注解的SSH2框架集成

    在这个基于Spring注解的SSH2框架集成中,我们将深入探讨如何将这三个组件有效地整合,并利用Spring的注解驱动特性提升开发效率。 首先,Struts2是一个强大的MVC(Model-View-Controller)框架,它在Struts1的基础上...

    使用Spring进行数据访问

    首先,Spring框架提供了多种数据访问机制,如JDBC(Java Database Connectivity)、ORM(Object-Relational Mapping)框架集成,例如Hibernate和MyBatis,以及对JPA(Java Persistence API)的支持。这些工具使得...

    spring boot 集成框架事例

    Spring Boot与Spring Data的集成使得数据访问层的开发更为简单。例如,通过Spring Data JPA,开发者可以自动生成CRUD操作,只需定义Repository接口即可。此外,Spring Data还支持集成Elasticsearch、Redis等搜索引擎...

    ssh(Struts2+hibernate+spring)三大开源框架的参考文档

    Spring还提供了对其他框架如Struts2和Hibernate的集成支持。Spring2.0-reference_final_zh_cn.chm文档可能包含了Spring的IoC容器、AOP、数据访问/集成、Web应用、MVC、任务调度等方面的内容。 学习SSH三大框架,你...

    三大框架集成 struts2,spring,hibernate

    6. 整合Spring和Hibernate:在Spring配置文件中定义SessionFactory bean,使用HibernateTemplate或JdbcTemplate进行数据访问。 这样的集成使得开发者可以专注于业务逻辑,减少了底层的繁琐操作。对于初学者,了解并...

    Spring+Spring MVC+Mybatis框架搭建

    **框架整合**:SSM框架的整合主要是将这三个框架的功能结合在一起,以实现数据访问、业务逻辑处理和用户界面展示的分离。首先,需要配置Spring的Context和MVC上下文,定义bean并进行依赖注入。然后,配置Mybatis的...

    Spring框架学习笔记

    Spring框架是为了解决企业应用开发的复杂性而设计的,它提供了一个全面的基础设施,包括数据访问、事务管理、远程访问、Web应用、邮件服务等。Spring的核心是IOC(Inversion of Control)容器,通过控制反转实现对象...

    传智播客_Spring 2016框架视频

    通过对Spring框架的介绍可以看出,它不仅仅是一个简单的框架,而是集成了许多先进的设计理念和技术特性。无论是对于初学者还是经验丰富的开发者来说,掌握Spring框架都是非常有价值的。希望本文能帮助读者更好地理解...

    Mybatis框架 struts2框架 spring框架集成 mysql脚本

    Spring还集成了数据访问、Web应用、任务调度等多个模块,包括对Mybatis和Struts2的支持,可以方便地与这些框架进行整合。 在集成Mybatis、Struts2和Spring的过程中,通常会使用Spring的ApplicationContext来管理...

    Spring基础:数据访问(3)

    总的来说,Spring数据访问涵盖了广泛的领域,从基础的JDBC封装到ORM框架的集成,再到事务管理和源码分析,这些都是构建高效、健壮的后端服务不可或缺的部分。通过深入理解和实践这些知识点,开发者能够更好地利用...

    SSH和Spring框架简介

    Spring还提供了数据访问、Web、事务管理等多种模块,涵盖了完整的应用开发需求。Spring MVC是Spring框架的一部分,也是一个MVC框架,可以替代Struts2作为Web层的解决方案。 3. **Hibernate**:Hibernate是一个持久...

    SSM+spring security3.x框架整合(附带数据文件)

    Spring Security是Spring生态中的安全模块,它提供了全面的身份验证和授权机制,用于保护Web应用程序免受各种安全威胁。Spring Security 3.x版本支持基于角色的访问控制(RBAC)、CSRF防护、密码加密和会话管理等...

    Struts2+Spring框架集成实例

    此外,Spring还提供了数据访问抽象(如JDBC模板)、Spring MVC、Spring Boot等子项目,覆盖了开发的多个层面。 3. **Struts2与Spring集成**:将Struts2和Spring整合可以实现更高效的控制流管理和业务逻辑处理。通常...

    Spring框架基础总结

    4. **AOP技术**:Spring框架集成了AOP技术,使得诸如权限拦截、运行时监控等功能的实现变得异常简单,进一步增强了应用程序的功能性和安全性。 5. **辅助类支持**:Spring框架提供了一系列辅助类,可以帮助开发者...

    springssh 我上培训班时spring框架搭建课件

    综上所述,SSH框架的集成应用涉及多个层面的配置和设计,从数据访问到事务管理,再到Web应用的构建,每个环节都紧密相连,相互作用。掌握这一框架的搭建和使用,对于提升Java开发者的技能水平具有重要意义。

    SSH整合集成,Struts1.3 Spring2.5 hibernate3.0框架集成整合

    **Spring2.5** 是一个全面的Java应用框架,它不仅包含面向切面编程(AOP)、依赖注入(DI)等核心特性,还提供了事务管理、数据访问、Web应用支持等多种功能。Spring2.5版本在DI上有了很大的改进,使得组件配置更加...

    ssh集成jar包,支持spring集成Hibernate,spring集成struts2等

    - Spring与Hibernate集成,通常使用Spring的HibernateTemplate或HibernateDaoSupport,提供事务管理和数据访问抽象,使得代码更简洁,事务控制更方便。 - Spring与Struts2集成,Spring可以作为Struts2的Action的...

    JAVA Struts2+Spring+Hibernate=SSH框架集成教程(ppt+源代码).zip

    此外,Spring还包含了数据访问、事务管理、JMS、电子邮件等多种企业级服务支持。 ### 3. Hibernate框架 Hibernate是一个对象关系映射(ORM)框架,它简化了数据库操作,将Java对象与数据库表进行映射,避免了繁琐...

Global site tag (gtag.js) - Google Analytics