`
天空不空
  • 浏览: 94762 次
  • 性别: Icon_minigender_1
  • 来自: 火星
社区版块
存档分类
最新评论

使用 Spring + iBATIS 框架详解

    博客分类:
  • Java
 
阅读更多

1: spring框架介绍

 

Spring框架是一个分层架构,由7个定义好的模块组成。Spring模块构建在核心容器上,核心容器定义了创建、配置和管理bean的方式。

每个模块的功能如下:

核心容器:核心容器提供Spring框架的基本功能。核心容器的主要组件是BeanFactory,它是工厂模式的实现,BeanFactory使用控制反转(IoC)模式将应用程序的配置和依赖性规范与实际的应用代码分开。

Spring上下文:Spring上下文是一个配置文件,向Spring框架提供上下文信息,Spring上下文包括企业服务,例如,JNDIEJB、电子邮件、国际化、校验和调度功能。

Spring AOP:通过配置管理特性,Spring AOP模块直接将面向方面的编程功能集成到了Spring框架中,所以,可以很容易地使用Spring框架管理任何对象支持AOPSpring AOP模块为基于Spring的应用程序中的对象提供了事务管理服务,通过使用Spring AOP,不用依赖EJB组件,就可以将声明性事务管理集成到应用程序中。

Spring DAOJDBC DAODAO Access Object抽象层提供了有意义的异常层次机构,可用该机构管理异常处理和不同数据库供应商抛出的错误消息。异常层次机构简化了错误处理,并且极大地降低了需要编写地异常代码数量]Spring DAO的面向JDBC的异常遵从通用的DAO异常层次机构。

Spring ORMSpring框架插入了若干个Object/Relation Mapping框架,从而提供了ORM的对象关系映射工具,其中包括JDOHibernateiBatis SQL Map。所有这些都遵从Spring的通用事务和DAO异常层次机构。

Spring Web模块:Web上下文模块建立在应用程序上下文模块之上,为基于Web的应用程序提供了上下文。所以,Spring框架支持与Struts的集成。Web模块还简化了处理多部分请求,以及将请求参数绑定到域对象的工作。

Spring MVC框架:MVC框架是一个全功能的构建Web应用程序的MVC实现,通过策略变为可配置的,MVC容纳了大量视图技术,其中包括JSP等。

Spring框架的功能可以用在任何J2EE服务器中,大多数功能也适用于不受管理的环境,Spring的核心要点是支持不绑定到特定J2EE服务的可重用业务和数据访问对象。毫无疑问,这样的对象可以在不同J2EE环境(WebEJB)、独立应用程序、测试环境之间重用。

 

2: Ibatis介绍

纵观目前主流的ORM,无论Hibernate 还是Apache OJB,都对数据库结构提供了较为完整的封装,提供了从POJO 到数据库表的全套映射机制。程序员往往只需定义好了POJO 到数据库表的映射关系,即可通过Hibernate或者OJB 提供的方法完成持久层操作。程序员甚至不需要对SQL 的熟练掌握,Hibernate/OJB 会根据制定的存储逻辑,自动生成对应的SQL 并调用JDBC 接口加以执行。
   
大多数情况下(特别是对新项目,新系统的开发而言),这样的机制无往不利,大有一统天下的势头。但是,在一些特定的环境下,这种一站式的解决方案却未必灵光。如: 

1 系统的部分或全部数据来自现有数据库,处于安全考虑,只对开发团队提供几条Select SQL(或存储过程)以获取所需数据,具体的表结构不予公开[6]
  
2 开发规范中要求,所有牵涉到业务逻辑部分的数据库操作,必须在数据库层由存储过程实现。

3 系统数据处理量巨大,性能要求极为苛刻,这往往意味着我们必须通过经过高度优化的SQL语句(或存储过程)才能达到系统性能设计指标。“半自动化”的ibatis,却刚好解决了这个问题。这里的“半自动化”,是相对Hibernate等提供了全面的数据库封装机制的“全自动化”ORM 实现而言,“全自动”ORM 实现了POJO 和数据库表之间的映射,以及SQL 的自动生成和执行。而ibatis 的着力点,则在于POJO SQL之间的映射关系。也就是说,ibatis并不会为程序员在运行期自动生成SQL 执行。具体的SQL 需要程序员编写,然后通过映射配置文件,将SQL所需的参数,以及返回的结果字段映射到指定POJO
   
使用
ibatis 提供的ORM机制,对业务逻辑实现人员而言,面对的是纯粹的Java对象,这一层与通过Hibernate 实现ORM 而言基本一致,而对于具体的数据操作,Hibernate会自动生成SQL 语句,而ibatis 则要求开发者编写具体的SQL 语句。相对Hibernate等“全自动”ORM机制而言,ibatis SQL开发的工作量和数据库移植性上的让步,为系统设计提供了更大的自由空间[8]。作为“全自动”ORM实现的一种有益补充,ibatis 的出现显得别具意义。

 

3 DAO数据存取

 

J2EE开发人员使用数据访问对象(DAO)设计模式把底层的数据访问逻辑和高层的商务逻辑分开.实现DAO模式能够更加专注于编写数据访问代码.

DAO模式是标准的J2EE设计模式之一.开发人员使用这个模式把底层的数据访问操作和上层的商务逻辑分开.一个典型的DAO实现有下列几个组件:
   
1  一个DAO工厂类;
   
2  一个DAO接口;
   
3  一个实现DAO接口的具体类;
   
4  数据传递对象(有些时候叫做值对象).

在源程序的一个包中放置的是已经封装好的底层数据库连接组件,也就是所谓的DAO(Data Access Object)组件[11]DAO组件的主要功能是提供数据库存取服务。通过这一组封装好的组件,可以完成以下的功能:从系统的配置文件中读取系统的配置参数,该配置文件中存放的是连接数据库的配置。

 

4 配置Sql-map-config.xml

 

Sql-map-config文件是负责前台业务和后台数据库交互的一个配置文件:

<?xml version="1.0" encoding="GBK"?>

<!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"

    "http://www.ibatis.com/dtd/sql-map-config-2.dtd">

<sqlMapConfig>

  <settings

    cacheModelsEnabled="true"

    enhancementEnabled="true"

    lazyLoadingEnabled="true"

    maxRequests="256"

    maxSessions="100"

    maxTransactions="100"

    useStatementNamespaces="true"

  />

/*中间为由生成jar包工具生成的各个表的xml文件,用到的数据库表,必须在该文件中配置,否则,将不起作用;

 <sqlMap resource="com/zzxy/mvc/dao/atom/maps/CF_AJXX.xml"/>

………

</sqlMapConfig>

其中,我们所写的各个固定的配置文件也必须写在该配置文件中。

 

5 配置applicationContext.xml

 

 

applicationContext.xml文件是基本的配置文件, 放置在你所创建工程的WEB-INF,所用的技术为Spring+Ibatis,也是该框架的基础,所有的业务开发,都要建立在该配置文件上面;

 

5.1 配置方法

 

该配置文件分为四个部分:

(1):文档开头定义

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>

(2):数据源定义和SqlMapClientIBATIS数据库层设定

 

  <bean id="DataSource" class="org.springframework.jndi.JndiObjectFactoryBean">

<property name="jndiName" value="java:OracleDS"/>

  </bean>

 <bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager"/>

  <!-- SqlMapClient setup for iBATIS Database Layer -->

  <bean id="SqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">

    <property name="dataSource"><ref local="DataSource"/></property>

    <property name="configLocation">

      <value>WEB-INF/sql-map-config.xml</value>

    </property>

  </bean>

注意这部分代码, 定义sqlMapClient时,configLocationvalue需要定义为<value>WEB-INF/sql-map-config.xml</value>,否则会引起很多错误;

 

(3): DAO的定义和Ibatis 的实现的class文件路径:

 <bean id="publicDao" class="com.zzxy.mvc.mis.dao.custom.PublicDaoImp">

    <property name="dataSource"><ref local="DataSource"/></property>

    <property name="sqlMapClient" ref="SqlMapClient"/>

  </bean>

<bean id="cf_ajxx_dao" class="com.zzxy.mvc.dao.atom.impl.CF_AJXX_DAOImp">

    <property name="dataSource"><ref local="DataSource"/></property>

    <property name="sqlMapClient" ref="SqlMapClient"/>

  </bean>

….

(4):定义数据层和数据库层的接口

DC为所有的dao的集合

  <bean id="DC" class="com.zzxy.mvc.mis.dao.DaoCollection">

    <property name="publicDao" ref="publicDao"/>

       <property name="cf_ajxx_dao" ref="cf_ajxx_dao"/>

         …………

  </bean>

</beans>

 

6 MVC架构

 

MVC架构为目前很流行的系统架构。

MVC最初是在Smalltalk-80中被用来构建用户界面的。M代表模型Model, V代表视图 View C代表控制器Controller

MVC的目的是增加代码的重用率,减少数据表达,数据描述和应用操作的耦合度。 同时也使得软件可维护性,可修复性,可扩展性,灵活性以及封装性大大提高。

单用户的应用通常是以事件驱动的用户界面为组织结构的。开发人员用一个界面工具画了一个用户接口界面,然后编写代码根据用户输入去执行相应的动作,许多交互式的开发环境鼓励这么做,因为它强调先有界面然后再有功能。一些软件设计模式策略是这样的,然后经常将固定后的代码融入最后的系统当中。导致的结果就是,程序组织围绕用户界面元素和用户在那些界面元素上的动作,数据的存储,应用的功能以及用来显示的代码都杂乱无章的缠绕在一起。在单用户的系统里代码结构是可以这样的,因为系统需求不会频繁变化。但是对一个大的系统如大型Web系统,或电子商务系统来说就不太适用了。

通过把数据模式从各种可以被存取和控制的数据中分离出来可以改善分布式系统的设计。MVC设计模式由三部分组成。模型是应用对象,没有用户界面。视图表示它在屏幕上的显示,代表流向用户的数据。控制器定义用户界面对用户输入的响应方式,负责把用户的动作转成针对Model的操作。Model 通过更新View的数据来反映数据的变化。 

 

三者关系如图:

  • 大小: 488.9 KB
分享到:
评论
1 楼 firefox_1983 2008-04-26  
楼主不厚道,ibatis这段跟夏昕写的<<ibatis开发指南>>很累雷同啊。

相关推荐

    Struts+Spring+Ibatis整合框架搭建配置文档

    通过以上步骤,我们成功地集成了Struts、Spring以及Ibatis框架,为构建复杂的企业级应用奠定了坚实的基础。这种整合不仅提高了代码的复用性与维护性,还增强了应用的性能与安全性。对于开发者而言,熟练掌握这一技术...

    spring+ibatis+webwork框架搭配

    ### Spring+Ibatis+WebWork框架搭配详解 在软件开发领域,选择合适的开发框架对于项目的成功至关重要。本文将深入探讨如何结合使用Spring、Ibatis(现称为MyBatis)以及WebWork这三个流行的Java开发框架来构建高效...

    Spring+iBatis整合详解

    ### Spring与iBatis整合详解 #### 一、前言 在Java企业级应用开发中,Spring框架以其强大的依赖注入(DI)和面向切面编程(AOP)能力深受开发者喜爱,而iBatis(现更名为MyBatis)作为一款优秀的持久层框架,通过...

    Spring+Webwork+iBatis 组合实例

    #### 四、iBatis框架简介 iBatis是一个基于Java的持久层框架,它提供了一种将SQL语句映射到Java对象的方法,从而简化了数据访问层的编码工作。iBatis特别适合于那些希望对SQL语句有更多控制权的开发者。 #### 五、...

    Spring+Struts2+Ibatis整合例子

    **Spring、Struts2 和 iBatis 整合详解** 在Java Web开发中,Spring、Struts2 和 iBatis 是三个非常重要的框架。它们分别负责不同层面的任务:Spring 提供了全面的依赖注入(DI)和面向切面编程(AOP),用于管理...

    ibatis+spring+struts2 整合开发例子

    "ibatis+spring+struts2 整合开发例子"就是一个典型的Java Web应用集成开发案例,旨在帮助开发者理解和掌握这三大框架的协同工作原理。接下来,我们将详细讨论这三个组件以及它们的整合过程。 Ibatis是一个轻量级的...

    Struts+Spring+Ibatis整合框架搭建文档

    ### Struts+Spring+Ibatis整合框架搭建知识点详解 #### 一、框架介绍与整合意义 **Struts**是一款开源的MVC框架,主要用于构建基于Java的Web应用程序。它简化了开发过程,使得开发者能够更加关注业务逻辑而非基础...

    flex4+blazeDS+spring+ibatis开发教程

    这种架构下,Flex 作为客户端,使用 BlazeDS 实现与后端的实时数据传输,Spring 作为业务逻辑层,iBatis 作为数据持久化层,Cairngorm 作为 Flex 的MVC框架。 ##### 2. Flex+BlazeDS+SpringBlazeDSIntegration+...

    struts2+spring+ibatis整合

    通过上述分析,我们可以看到Struts2 + Spring + iBatis框架整合不仅能够实现清晰的层次划分,还能提高代码的可维护性和扩展性。然而,这种整合方式也有一定的学习曲线和技术门槛,开发者需要具备扎实的Java基础以及...

    spring+webwork+ibatis

    【标题】"Spring+WebWork+Ibatis"整合框架详解 在现代Web应用程序开发中,框架的集成使用能够显著提高开发效率和代码质量。"Spring+WebWork+Ibatis"是一个经典的组合,它将Spring的强大功能、WebWork的轻量级MVC...

    spring3+struts2+ibatis

    《Spring3+Struts2+Ibatis:企业级应用开发框架整合详解》 在现代企业级Web应用开发中,Spring、Struts2和Ibatis是常见的三大组件,它们各自负责不同的职责,共同构建出高效、灵活的应用架构。Spring作为全能型的...

    Struts2+Spring+Ibatis环境配置

    ### Struts2+Spring+Ibatis环境配置详解 在Java Web开发领域,Struts2、Spring与Ibatis(现称为MyBatis)是三个非常重要的框架。它们各自有着不同的功能定位,通过合理地结合使用,可以极大地提升项目的开发效率与...

    Spring+ibatis+SpringMVC简单集体demo案例

    《Spring+Ibatis+SpringMVC简单集成案例详解》 在现代Java Web开发中,Spring框架因其强大的功能和灵活性而备受青睐。它不仅提供了依赖注入(DI)和面向切面编程(AOP)的核心特性,还通过SpringMVC扩展了对Web应用...

    spring+ibatis demo搭建

    ### Spring+Ibatis Demo搭建详解 #### 一、项目背景与目标 在现代软件开发过程中,集成多种技术栈来构建高效稳定的应用系统是常见的做法。本文档将详细介绍如何使用Spring和Ibatis这两种流行的技术框架搭建一个...

    spring+ibatis集成文档

    ### Spring与iBatis集成开发详解 #### 一、引言 在Java企业级应用开发领域,Spring框架因其强大的依赖注入(DI)和面向切面编程(AOP)能力而备受青睐;而iBatis(现称为MyBatis)则以其简洁的SQL映射功能而闻名。...

    jpetstore4.0 (spring+struts+ibatis)

    **iBatis框架** iBatis是一个SQL映射框架,它将SQL语句与Java代码分离,使开发者能够灵活地编写数据库查询。在jpetstore4.0中,iBatis主要负责: 1. **SQL动态生成**:iBatis允许根据传入的参数动态生成SQL语句,...

Global site tag (gtag.js) - Google Analytics