Spring+ibatis_数据化持久层 - 副本 - 副aaaaa本

合集下载

SpringMVC+Spring+Hibernate框架整合原理,作用及使用方法

SpringMVC+Spring+Hibernate框架整合原理,作用及使用方法

SpringMVC+Spring+Hibernate框架整合原理,作⽤及使⽤⽅法SSM框架是spring MVC ,spring和mybatis框架的整合,是标准的MVC模式,将整个系统划分为表现层,controller层,service层,DAO层四层使⽤spring MVC负责请求的转发和视图管理spring实现业务对象管理,mybatis作为数据对象的持久化引擎原理:SpringMVC:1.客户端发送请求到DispacherServlet(分发器)2.由DispacherServlet控制器查询HanderMapping,找到处理请求的Controller3.Controller调⽤业务逻辑处理后,返回ModelAndView4.DispacherSerclet查询视图解析器,找到ModelAndView指定的视图5.视图负责将结果显⽰到客户端Spring:我们平时开发接触最多的估计就是IOC容器,它可以装载bean(也就是我们中的类,当然也包括service dao⾥⾯的),有了这个机制,我们就不⽤在每次使⽤这个类的时候为它初始化,很少看到关键字new。

另外spring的aop,事务管理等等都是我们经常⽤到的。

Mybatis:mybatis是对jdbc的封装,它让数据库底层操作变的透明。

mybatis的操作都是围绕⼀个sqlSessionFactory实例展开的。

mybatis通过配置⽂件关联到各实体类的Mapper⽂件,Mapper⽂件中配置了每个类对数据库所需进⾏的sql语句映射。

在每次与数据库交互时,通过sqlSessionFactory拿到⼀个sqlSession,再执⾏sql命令。

使⽤⽅法:要完成⼀个功能:1. 先写实体类entity,定义对象的属性,(可以参照数据库中表的字段来设置,数据库的设计应该在所有编码开始之前)。

2. 写Mapper.xml(Mybatis),其中定义你的功能,对应要对数据库进⾏的那些操作,⽐如 insert、selectAll、selectByKey、delete、update等。

基于STRUTS2.0+SPRING+IBATIS技术的WEB开发

基于STRUTS2.0+SPRING+IBATIS技术的WEB开发

基于STRUTS2.0+SPRING+IBATIS技术的WEB开发摘要:随着b/s多层应用已成为web开发的主流,本文首先介绍了struts2.0、spring、ibatis这三种框架,随后介绍了如何使用这三种框架组合来实现web开发。

关键词:b/s struts2.0 spring ibatis随着中国软件的发展,不同于c/s软件,用户不需要在每台电脑上安装客户端软件,b/s软件只需要在联网电脑的浏览器中输入网址就可以访问远程的信息,因此b/s软件越来越受到用户的欢迎。

b/s 软件的开发有很多种方式,有不同的语言,本文主要介绍在struts2.0、spring、ibatis三种框架组合的基础上实现高校宿舍智能化、信息化管理的研究与实现。

1、struts2.0struts2的体系使用了webwork的设计核心,并大量使用拦截器来处理用户请求,从而允许用户的业务逻辑控制器与servlet api分离。

从数据流图上来看,struts2与webwork相差不大,struts2同样使用拦截器作为处理,以用户的业务逻辑控制器为目标,创建一个控制器代理。

控制器代理负责处理用户请求,处理用户请求时回调业务控制器的execute方法,该方法的返回值将决定了struts 2将怎样的视图资源呈现给用户。

2、springspring是目前java ee 领域中比较流行的一个开源框架,它的目的是为了解决企业应用程序开发的复杂性。

spring框架的分层架构允许在不同的层次上选择各种组件,所以spring可以和hibernate、struts以及jsf等框架结合起来。

spring框架是一个分层架构,由7个定义良好的模块组成。

spring 模块构建在核心容器之上,核心容器定义了创建、配置和管理 bean 的方式。

组成spring框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。

3、ibatisibatis是以sql为中心的持久化层框架。

Spring与ibatis整合学习心得

Spring与ibatis整合学习心得

Spring与ibatis整合学习心得梁飞虎首先,明确一下ibatis在此工程中的作用相当于hibernate,就是进行数据库的访问,也就是连接操作数据库用的。

因此常说的SSH结构也可用SSI来取代,只是ibatis是一个轻量级的框架。

在spring.jar包中有org.springframework.orm.ibatis.SqlMapClientFactoryBean类,此类用于读取ibatis中的配置文件(总配置文件)sqlMapConfig.xml,具体的配置位置是在applicationContext.xml中:标记1<bean id="sqlMapClient"class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"> <property name="configLocation"><value>WEB-INF/sqlMapConfig.xml</value></property></bean>而sqlMapConfig.xml文件中包含ibatis的map文件信息,这点不再详述。

SqlMapClientFactoryBean,这个class实现了两个interface:FactoryBean和InitializingBean,InitializingBean只有一个方法afterPropertiesSet()spring调用构造函数后,发现它实现了InitializingBean接口,所以还会调用afterPropertiesSet来进一步初始化此class。

sqlMapClient 就是在这里面创建的。

至此一个完整的工厂创建完成。

FactoryBean接口主要方法就是public Object getObject();要知道SqlMapClientFactoryBean是一个工厂类,他的作用就是你需要的时候调用它的一个方法,它就会返回你一个你需要的对象。

各种系统架构图及其简介范文

各种系统架构图及其简介范文

1.Spring 架构图Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。

框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为J2EE 应用程序开发提供集成的框架。

Spring 框架的功能可以用在任何J2EE 服务器中,大多数功能也适用于不受管理的环境。

Spring 的核心要点是:支持不绑定到特定J2EE 服务的可重用业务和数据访问对象。

这样的对象可以在不同J2EE 环境(Web或EJB )、独立应用程序、测试环境之间重用。

组成Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。

每个模块的功能如下:∙核心容器:核心容器提供Spring 框架的基本功能。

核心容器的主要组件是BeanFactory ,它是工厂模式的实现。

BeanFactory 使用控制反转(IOC )模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。

∙Spring 上下文:Spring 上下文是一个配置文件,向Spring 框架提供上下文信息。

Spring 上下文包括企业服务,例如JNDI 、EJB 、电子邮件、国际化、校验和调度功能。

∙Spring AOP :通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了Spring 框架中。

所以,可以很容易地使Spring 框架管理的任何对象支持AOP 。

Spring AOP 模块为基于Spring 的应用程序中的对象提供了事务管理服务。

通过使用Spring AOP ,不用依赖EJB 组件,就可以将声明性事务管理集成到应用程序中。

∙Spring DAO :JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。

异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。

Spring DAO 的面向JDBC 的异常遵从通用的DAO 异常层次结构。

SpringData与MyBatis的比较和选择

SpringData与MyBatis的比较和选择

SpringData与MyBatis的比较和选择在Java开发领域,SpringData和MyBatis都是非常受欢迎的持久化框架。

它们都有自己独特的特点和优势,但也存在一些不同之处。

本文将对这两个框架进行比较,帮助开发者选择适合自己项目需求的框架。

1. 简介SpringData是由Spring框架提供的一个用于简化数据库访问的基础架构。

它整合了现有的持久化框架(如JPA、Hibernate、MyBatis等),为开发者提供了一种统一的方式来操作数据库。

而MyBatis则是一个持久化框架,它通过SQL映射文件将Java对象与数据库表进行映射。

2. 功能特点2.1 SpringDataSpringData提供了一套丰富的API,支持多种数据库访问方式,包括关系型数据库、NoSQL数据库以及搜索引擎。

它具有自动生成SQL语句、分页查询、事务管理等功能,并提供了一些常用查询方法的实现,减少了开发者的工作量。

2.2 MyBatisMyBatis是一个轻量级的持久化框架,它与数据库之间的交互主要通过手写的SQL语句。

MyBatis的主要特点是灵活性和可控性,开发者可以根据需求自由编写SQL,优化查询性能。

此外,MyBatis还支持一级、二级缓存,提高了查询的效率。

3. 使用场景3.1 SpringDataSpringData适用于对数据库操作较为简单的场景,对于增删改查等基本操作,SpringData提供了一些默认实现,可以快速完成开发。

同时,SpringData也支持动态查询、排序、分页等高级查询功能,能够满足大部分常见的需求。

3.2 MyBatisMyBatis适用于对数据库操作较为复杂、SQL定制化要求较高的场景。

由于MyBatis将SQL与Java代码分离,开发者完全可以根据需求优化SQL语句,提高查询效率。

此外,MyBatis的一级、二级缓存也适用于对查询性能有较高要求的场景。

4. 性能比较4.1 SpringData由于SpringData是一个整合了多种持久化框架的库,它的性能往往受到具体框架的影响。

mybatis基本工作原理

mybatis基本工作原理

mybatis基本工作原理Mybatis是一款Java持久层框架,是著名的SqlMap框架的升级版。

Mybatis的本质是一个ORM框架,是一种半自动化的框架,将数据库中的数据与Java对象建立映射关系,使Java对象与关系型数据库中的表结构进行映射,从而实现数据的持久化存储及后续的CRUD操作。

一、Mybatis工作流程Mybatis的工作流程主要可以分为三个步骤:准备工作、执行工作和结果处理。

1. 准备工作在执行SQL之前,Mybatis需要先加载并解析配置文件,并通过配置文件中的信息构建出SqlSessionFactory对象。

然后,SqlSessionFactory会创建SqlSession对象,并且在此过程中会设置数据库连接,以及配置一些参数信息用于后续的SQL执行。

2. 执行工作执行SQL语句时,SqlSession对象会将SQL语句、参数和对应的映射文件(即配置文件)传递给Executor对象,由Executor对象实际执行SQL语句。

Executor对象根据SQL类型的不同,调用相应的Statement和ResultSet来执行和处理SQL语句。

3. 结果处理当Executor对象执行完SQL语句后,会返回一个包含查询结果的ResultSet对象,SqlSession对象会根据ResultMap对象把ResultSet中的数据映射成Java对象。

最后,将映射好的Java对象返回给应用层。

二、Mybatis配置文件Mybatis的配置文件主要包括两个文件:mybatis-config.xml和映射文件(*.xml)。

1. mybatis-config.xmlmybatis-config.xml是Mybatis的核心配置文件,其中包括数据源等信息。

mybatis-config.xml的配置最核心的是配置数据源,即配置数据库信息。

其中,数据源的配置主要包括连接数据库需要的地址、用户名、密码等信息。

spring与ibatis框架整合

spring与ibatis框架整合

spring与ibatis框架整合问题:spring与ibatis框架整合回答:Spring和Ibatis框架整合的思路与spring和hibernate框架的整合思路基本一致。

步骤一:新建立一个项目。

步骤二:为该项目添加spring的应用环境。

步骤三:导入Ibatis的必须JAR包以及数据库JAR包。

步骤四:新建实体Bean。

如下:package cn.test.entity;import java.io.Serializable;/*** @author Administrator**学生实体Bean**/public class Student implements Serializable/****/private static final long serialVersionUID = 1L; private Integer id;private String studentname;private Integer studentage;private String studentaddress;public Integer getId()return id;public void setId(Integer id)this.id = id;public String getStudentname()return studentname;public void setStudentname(String studentname) this.studentname = studentname;public Integer getStudentage()return studentage;public void setStudentage(Integer studentage) this.studentage = studentage;public String getStudentaddress()return studentaddress;public void setStudentaddress(String studentaddress)this.studentaddress = studentaddress;步骤五:新建相应的Bean的配置文件。

基于ExtJs、Spring和iBATIS的Web系统应用研究

基于ExtJs、Spring和iBATIS的Web系统应用研究

基于ExtJs、Spring和iBATIS的Web系统应用研究摘要:在分析ExtJs、Spring和iBATIS三种开源框架特点的基础之上,提出了集成这三种框架的Web应用系统。

通过实例代码,分析了表现层、控制层、业务逻辑层和数据持久层实现过程。

最后指出了该Web应用系统的优势,以及在开发指标管理系统时的注意事项。

关键词:ExtJs;Spring;iBATIS;富因特网应用;Web应用0引言随着技术的发展,Ajax技术的出现,B/S结构的Web应用逐渐向富客户端发展。

富客户端技术集成了桌面应用的交互性和传统Web应用的部署灵活性,为用户提供一个更丰富、更高和更全方位的网络体验。

ExtJS框架便是一种与后台技术无关的,可以用来开发富客户端的前端Ajax框架。

在开发基于J2EE的中小型企业级的Web应用时,强调的是系统的敏捷开发、可扩展性以及易于维护。

然而,传统的基于EJB的重量级框架技术由于其复杂性,往往使开发过程事倍功半。

类似于Spring的轻量级框架的出现,正好解决上述问题。

目前,轻量级框架的发展已经成为推动J2EE技术发展的重要推动力,成为新一代J2EE 技术构架的基础。

本文通过对ExtJs、Spring和iBATIS的整合研究,探索用户体验好、系统开发高效、可复用性和易于维护的集成框架平台,为指标管理系统的开发提供较好的框架技术支撑。

1开源框架介绍1.1ExtJs框架ExtJs框架是一个强大的JavaScript类库,提供了可重用的对象和部件,简化了开发,丰富了客户端界面效果。

它基于纯HTML/CSS 和JavaScript技术,灵活采用JSON/XML作为交换格式,提供丰富的跨浏览器UI组件,使服务端表示层的负荷减轻,从而达到客户端RIA 应用。

1.2Spring框架Spring是一个提供了解决J2EE问题的一站式框架,包括核心容器、Spring Context、Spring AOP、Spring DAO、Spring ORM、Spring Web和Spring MVC七个模块。

五大框架的理解

五大框架的理解

Java 五大框架之间的对比Spring 及其优点大部分项目都少不了spring的身影,为什么大家对他如此青睐,而且对他的追捧丝毫没有减退之势呢Spring是什么:Spring是一个轻量级的DI和AOP容器框架。

说它轻量级有一大部分原因是相对与EJB的(虽然本人从没有接触过EJB的应用),重要的是,Spring是非侵入式的,基于spring开发的应用一般不依赖于spring的类。

DI:称作依赖注入(Dependency Injection),和控制反转一个概念,具体的讲,当一个角色需要另外一个角色协助的时候,在传统的程序设计中,通常有调用者来创建被调用者的实例。

但是在spring中创建被调用者将不再有调用者完成,因此叫控制反转。

创建被调用对象有Spring来完成,在容器实例化对象的时候主动的将被调用者(或者说它的依赖对象)注入给调用对象,因此又叫依赖注入。

AOP:Spring对面向切面编程提供了强有力的支持,通过它让我们将业务逻辑从应用服务(如事务管理)中分离出来,实现了高内聚开发,应用对象只关注业务逻辑,不再负责其它系统问题(如日志、事务等)。

Spring支持用户自定义切面。

面向切面编程是面向对象编程的有力补充。

面向对象编程将程序分成各个层次的对象,面向切面的程序将运行过程分解成各个切面。

AOP是从运行程序的角度去考虑程序的结构,提取业务处理过程的切面,OOP是静态的抽象,AOP是动态的抽象,是对应用执行过程的步骤进行抽象,从而获得步骤之间的逻辑划分。

容器:Spring是个容器,因为它包含并且管理应用对象的生命周期和配置。

如对象的创建、销毁、回调等。

框架:Spring作为一个框架,提供了一些基础功能,(如事务管理,持久层集成等),使开发人员更专注于开发应用逻辑。

看完了Spring是什么,再来看看Spring有哪些优点1.使用Spring的IOC容器,将对象之间的依赖关系交给Spring,降低组件之间的耦合性,让我们更专注于应用逻辑2.可以提供众多服务,事务管理,WS等。

六大类系统架构图及其简介

六大类系统架构图及其简介

各种系统架构图及其简介1.Spring架构图Spring是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。

框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为J2EE应用程序开发提供集成的框架。

Spring框架的功能可以用在任何J2EE 服务器中,大多数功能也适用于不受管理的环境。

Spring的核心要点是:支持不绑定到特定J2EE服务的可重用业务和数据访问对象。

这样的对象可以在不同J2EE环境(Web或EJB)、独立应用程序、测试环境之间重用。

组成Spring框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。

每个模块的功能如下:核心容器:核心容器提供Spring框架的基本功能。

核心容器的主要组件是BeanFactory,它是工厂模式的实现。

BeanFactory使用控制反转(IOC)模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。

Spring上下文:Spring上下文是一个配置文件,向Spring框架提供上下文信息。

Spring上下文包括企业服务,例如JNDI、EJB、电子邮件、国际化、校验和调度功能。

Spring AOP:通过配置管理特性,Spring AOP模块直接将面向方面的编程功能集成到了Spring框架中。

所以,可以很容易地使Spring框架管理的任何对象支持AOP。

Spring AOP模块为基于Spring的应用程序中的对象提供了事务管理服务。

通过使用Spring AOP,不用依赖EJB组件,就可以将声明性事务管理集成到应用程序中。

Spring DAO:JDBC DAO抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。

异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。

Spring DAO的面向JDBC的异常遵从通用的DAO异常层次结构。

Spring ORM:Spring框架插入了若干个ORM框架,从而提供了ORM的对象关系工具,其中包括JDO、Hibernate和iBatis SQL Map。

Java Spring框架的详细使用教程

Java Spring框架的详细使用教程

Java Spring框架的详细使用教程Java Spring框架是一个轻量级的开源框架,用于简化Java应用程序的开发。

它提供了许多功能和组件,能够帮助开发人员快速构建可扩展、可维护的企业级应用程序。

本文将详细介绍Java Spring框架的使用,包括框架的特点、核心概念和常用模块的介绍。

Java Spring框架的特点1. 轻量级:Java Spring框架采用了基于POJO(普通Java对象)的开发模式,不依赖于任何特定的容器或服务器,因此非常轻量级。

2. 面向切面编程(AOP):Java Spring框架支持面向切面编程,可以通过AOP来实现一些横切关注点,如事务管理、日志记录等。

3. 控制反转(IoC):Java Spring框架采用了控制反转的设计模式,将对象的创建、管理和依赖关系的维护交给框架来处理,使得开发人员能够更专注于业务逻辑的实现。

4. 声明式事务管理:Java Spring框架提供了事务管理的功能,可以通过简单的配置来实现声明式的事务管理,而无需编写复杂的事务控制代码。

Java Spring框架的核心概念1. IoC容器:IoC容器是Java Spring框架的核心部分,它负责对象的创建和管理。

开发人员将对象的实例化和依赖关系的维护交给IoC容器来处理,从而实现了对象的解耦和配置的灵活性。

2. Bean:在Java Spring框架中,被IoC容器所管理的对象被称为Bean。

Bean可以通过注解或XML配置的方式进行定义和配置。

3. AOP:面向切面编程是Java Spring框架的一个重要特性,开发人员可以通过AOP将一些横切关注点(如日志、安全、事务等)从业务逻辑中剥离出来,并在需要的时候进行统一的管理。

4. MVC框架:Java Spring框架提供了一个基于MVC(Model-View-Controller)模式的Web框架,通过将请求、处理和响应分离,使得Web应用程序的开发更加模块化和灵活。

【黑马程序员】关于spring的面试和笔试题(一)的副本 5

【黑马程序员】关于spring的面试和笔试题(一)的副本 5

【黑马程序员】关于spring的面试和笔试题(一)1. 什么是spring?Spring 是个java企业级应用的开源开发框架。

Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。

Spring 框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。

2. 使用Spring框架的好处是什么?轻量:Spring 是轻量的,基本的版本大约2MB控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们面向切面的编程(AOP):Spring支持面向切面的编程,并且把应用业务逻辑和系统服务分开容器:Spring 包含并管理应用中对象的生命周期和配置MVC框架:Spring的WEB框架是个精心设计的框架,是Web框架的一个很好的替代品事务管理:Spring 提供一个持续的事务管理接口,可以扩展到上至本地事务下至全局事务(JTA)异常处理:Spring 提供方便的API把具体技术相关的异常(比如由JDBC,Hibernate orJDO抛出的)转化为一致的unchecked 异常3. Spring由哪些模块组成?以下是Spring 框架的基本模块:Core moduleBean moduleContext moduleExpression Language moduleJDBC moduleORM moduleOXM moduleJava Messaging Service(JMS)moduleTransaction moduleWeb moduleWeb-Servlet moduleWeb-Struts moduleWeb-Portlet module4. 核心容器(应用上下文) 模块这是基本的Spring模块,提供spring 框架的基础功能,BeanFactory 是任何以spring为基础的应用的核心。

在spring中混合使用Hibernate和ibatis的配置方法

在spring中混合使用Hibernate和ibatis的配置方法

在spring中混合使用Hibernate和ibatis的配置方法Lee ⋅讨论在实际的项目开发中,如果只用hibernate,经常会遇到很多实现复杂的sql和map方法,这时候如果用ibatis却很简单,所以我们需要在一个项目中hibernate和ibatis并存,配置方法如下就可以实现来自:实现原理:Hibernate和ibatis在同一个webapp中混合使用在spring中的配置方法applicationContext-hibatis.xml文件的例子如下: ————————————————————————————————<!– Hibernate SessionFactory –><bean id=”sessionFactory”><property name=”dataSource”><ref bean=”dataSource”/></property><property name=”mappingResources”><list><value>org/javaresource/model/Role.hbm.xml</value><value>org/javaresource/model/User.hbm.xml</value><value>org/javaresource/model/UserCookie.hbm.xml</value><value>org/javaresource/model/UserRole.hbm.xml</value></list></property><property name=”hibernateProperties”><props><prop key=”hibernate.dialect”>@HIBERNATE-DIALECT@</prop></props></property></bean><!– SqlMap setup for iBATIS Database Layer –><bean id=”sqlMapClient”><property name=”configLocation”><value>classpath:/org/javaresource/persistence/ibatis/sql-map-config.xml</value></property></bean><!– Transaction manager for a single JDBC DataSource –><bean id=”transactionManager”><property name=”dataSource”><ref bean=”dataSource”/></property></bean><!– LookupDAO: iBatis implementation –><bean id=”lookupDAO”><pr operty name=”dataSource”><ref bean=”dataSource”/></property><property name=”sqlMapClient”><ref local=”sqlMapClient”/></property> </bean><!– UserDAO: Hibernate implementation –><bean id=”userDAO”><property name=”sessionFactory”><ref bean=”sessionFactory”/></property> </bean>。

系统架构说明手册

系统架构说明手册

服务业综合业务管理系统系统架构说明书——润和软件股份有限公司 一、概要本说明书对服务业综合业务管理系统的整体框架进行分块说明,对系统的采用技术点的技术点进行阐述,通过视图与描述展示整个系统框架的结构与层次。

二、目标构建服务业综合业务管理系统J2EE应用的开发框架,注入Spring支撑,使用兼具灵活性与使用性的ibatis作为持久层,使所有系统能规范开发组件、提高开发效率,易于统一升级和维护。

三、架构设计3.1、架构分析1、服务业综合业务管理系统采用B/S模式。

B/S 模式具有分布性特点,可以随时随地进行查询、浏览等业务处理。

其业务扩展简单方便,通过增加网页即可增加服务器功能。

而且后期维护方面只需要改变网页,即可实现所有用户的同步更新2、搭建轻量级J2EE框架—Spring框架。

J2EE为搭建具有可伸缩性、灵活性、易维护性的系统提供了良好的机制。

J2EE框架使得开发的产品更加高效,更加健壮,在伸缩性和稳定性上面也有着显而易见的效果。

而Spring是一个完美的框架“黏合剂”。

它提供了一种管理对象的方法,可以把中间层对象有效地组织起来。

他的分层结构可以增量引入项目。

而非侵入性应用程序对SpringAPI的依赖可以减至最小限度。

3、使用兼具灵活性与实用性的ibatis作为系统的持久层。

Ibatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。

Ibatis将代码和sql语句分离,sql可以写在xml中,结构清晰,灵活配置,对平台支持性大幅度提高。

3.2、设计思想1、系统技术架构采用主流的MVC模式MVC思想将一个应用分成三个基本部分:Model (模型)、View(视图)和Controller(控制器),这三个部分以最少的耦合协同工作,从而提高应用的可扩展性及可维护性。

直接向数据库发送请求并用HTML显示,开发速度往往比较快,但由于数据页面的分离不是很直接,因而很难体现出业务模型的样子或者模型的重用性。

使用Spring解决ibatis多数据源的苦恼

使用Spring解决ibatis多数据源的苦恼

iBatis多数据源的苦恼在仅使用ibatis时,多数据源简直就是梦魇,每多一个数据源就需要多一份sql-map-config配置文件。

采用spring的AbstractRoutingDataSource就可以简单的解决这个问题。

AbstractRoutingDataSource实现了javax.sql.DataSource接口,因此可以理解为一个虚拟的动态DataSource,在需要的时候根据上下文Context动态决定使用哪个数据源。

Spring+iBatis多数据源的配置下面是一个完整的配置:< beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:aop="/schema/aop"xmlns:tx="/schema/tx"xmlns:jee="/schema/jee"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans-2.5.xsd /schema/aop/schema/aop/spring-aop-2.5.xsd /schema/tx/schema/tx/spring-tx-2.5.xsd /schema/jee/schema/jee/spring-jee-2.5.xsd">< !-- ========================= GENERAL DEFINITIONS========================= -->< jee:jndi-lookup id="ds0" jndi-name="jdbc/ds0"/>< jee:jndi-lookup id="ds1" jndi-name="jdbc/ds1"/>< jee:jndi-lookup id="ds2" jndi-name="jdbc/ds2"/>< bean id="dataSource" class="com.xxx.xxx.util.DynamicDataSource"> < property name="targetDataSources">< map key-type="ng.String">< entry key="0" value-ref="ds0"/>< entry key="1" value-ref="ds1"/>< entry key="2" value-ref="ds2"/>< /map>< /property>< property name="defaultTargetDataSource" ref="1"/>< /bean>< !-- SqlMap setup for iBATIS Database Layer -->< bean id="sqlMapClient"class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">< property name="dataSource" ref="dataSource"/>< property name="configLocation"value="classpath:com/xxx/xxx/dao/sqlmap/sql-map-config.xml"/>< /bean>< bean id="testDAO" class="com.xxx.xxx.dao.impl.TestDAO">< property name="sqlMapClient" ref="sqlMapClient"/>< /bean>< bean id="testService"class="com.xxx.xxx.service.impl.TestService">< property name="testDAO" ref="testDAO"/>< /bean>< /beans>其核心是DynamicDataSource,代码如下package com.xxx.xxx.util;import org.apache.log4j.Logger;importorg.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource; public class DynamicDataSource extends AbstractRoutingDataSource {static Logger log = Logger.getLogger("DynamicDataSource");@Overrideprotected Object determineCurrentLookupKey() {// TODO Auto-generated method stubreturn DbContextHolder.getDbType();}}上下文DbContextHolder为一线程安全的ThreadLocal,如下package com.xxx.xxx.util;public class DbContextHolder {private static final ThreadLocal contextHolder = new ThreadLocal();public static void setDbType(String dbType) {contextHolder.set(dbType);}public static String getDbType() {return (String) contextHolder.get();}public static void clearDbType() {contextHolder.remove();}}sql-map-config.xml如下< ?xml version="1.0" encoding="UTF-8" standalone="no"?>< !DOCTYPE sqlMapConfig PUBLIC "-////DTD SQL Map Config 2.0//EN""/dtd/sql-map-config-2.dtd">< sqlMapConfig>< sqlMap resource="com/xxx/xxx/dao/sqlmap/Object.xml"/>< /sqlMapConfig>这样在调用service之前只需要设置一下上下文即可调用相应的数据源,如下:DbContextHolder.setDbType("2");//execute services//.........dao如下package com.xxx.xxx.dao.impl;import java.util.HashMap;import java.util.List;import java.util.Map;import org.apache.log4j.Logger;importorg.springframework.orm.ibatis.support.SqlMapClientDaoSupport;import com.xxx.xxx.vo.TestObj;public class TestDAO extends SqlMapClientDaoSupport implements ITestDAO {static Logger log = Logger.getLogger(TestDAO.class);public TestObj getTestObj(String objID) throws Exception {return (TestObj)getSqlMapClientTemplate().queryForObject("getTestObj", objID);}}以上就介绍了Spring+iBatis多数据源的配置方案。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ibatis in Springasdddddddddddd与Hibernate类似,ibatis也是一个ORM解决方案,不同的是两者各有侧重。

Hibernate提供了Java对象到数据库表之间的直接映射,开发者无需直接涉及数据库操作的实现细节,实现了一站式的ORM解决方案。

而ibatis则采取了另一种方式,即提供Java对象到SQL(面向参数和结果集)的映射实现,实际的数据库操作需要通过手动编写SQL实现。

在Java ORM世界中,很幸运,我们拥有了这两个互补的解决方案,从而使得开发过程更加轻松自如。

关于两者的对比,请参见笔者另一份文档:《ibatis开发指南》/ibatis_Guide.rar与Hibernate in Spring一节类似,这里我们重点探讨Spring框架下的ibatis应用,特别是在容器事务管理模式下的ibatis应用开发。

针对ibatis,Spring配置文件如下:Ibatis-Context.xml:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN""/dtd/spring-beans.dtd"><beans><bean id="dataSource"class="mons.dbcp.BasicDataSource"destroy-method="close"><property name="driverClassName"><value>net.sourceforge.jtds.jdbc.Driver</value></property><property name="url"><value>jdbc:jtds:sqlserver://127.0.0.1:1433/Sample</value></property><property name="username"><value>test</value></property><property name="password"><value>changeit</value></property></bean><bean id="sqlMapClient"class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"> SpringFrameWork Developer’s Guide Version 0.6October 8, 2004 So many open source projects. Why not Open your Documents? <property name="configLocation"><value>SqlMapConfig.xml</value></property></bean><bean id="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactio nManager"><property name="dataSource"><reflocal="dataSource"/></property></bean><bean id="userDAO" class="erDAO"><property name="dataSource"><ref local="dataSource" /></property><property name="sqlMapClient"><ref local="sqlMapClient" /></property></bean><bean id="userDAOProxy"class="org.springframework.transaction.interceptor.TransactionPro xyFactoryBean"><property name="transactionManager"><ref bean="transactionManager" /></property><property name="target"><ref local="userDAO" /></property><property name="transactionAttributes"><props><prop key="insert*">PROPAGATION_REQUIRED</prop><prop key="get*">PROPAGATION_REQUIRED,readOnly</prop></props></property></bean></beans>对比之前的JDBC和Hibernate配置,可以看到:1.sqlMapClient节点SpringFrameWork Developer’s Guide Version 0.6October 8, 2004 So many open source projects. Why not Open your Documents? 类似SessionFactory之与Hibernate,这里我们引入了针对ibatis SqlMap的SqlMapClientFactoryBean配置。

SqlMapClient对于ibatis的意义类似于Session 与Hibernate以及Connection与JDBC,这里的sqlMapClient节点实际上配置了一个sqlMapClient的创建工厂类。

configLocation属性配置了ibatis映射文件的名称。

2.transactionManager节点这里我们的transactionManager配置与之前JDBC示例中相同,都采用了DataSourceTransactionManager,这与Hibernate有些差异。

3.userDAO节点对应的,UserDAO需要配置两个属性,sqlMapClient和DataSource,sqlMapClient将从指定的DataSource中获取数据库连接。

其他配置基本上与JDBC示例中相同,这里就不加赘述。

本例中Ibatis映射文件非常简单:sqlMapConfig.xml:<sqlMapConfig><sqlMap resource="net/xiaxin/dao/entity/user.xml"/></sqlMapConfig>net/xiaxin/dao/entity/user.xml<sqlMap namespace="User"><typeAlias alias="user" type="er" /><insert id="insertUser" parameterClass="user">INSERT INTO users ( username, password) VALUES ( #username#,#password# )</insert></sqlMap>与Hibernate示例中类似,UserDAO.java同样简洁:public class UserDAO extends SqlMapClientDaoSupport implementsIUserDAO {public void insertUser(User user) {getSqlMapClientTemplate().update("insertUser", user);}}SqlMapClientDaoSupport(如果使用ibatis 1.x版本,对应支持类是SqlMapDaoSupport)是Spring中面向ibatis的辅助类,它负责调度DataSource、SpringFrameWork Developer’s Guide Version 0.6October 8, 2004 So many open source projects. Why not Open your Documents? SqlMapClientTemplate(对应ibatis 1.x版本是SqlMapTemplate)完成ibatis操作,而DAO则通过对此类进行扩展获得上述功能。

上面配置文件中针对UserDAO的属性设置部分,其中的属性也是继承自于这个基类。

SqlMapClientTemplate对传统SqlMapClient调用模式进行了封装,简化了上层访问代码。

User.java沿用之前Hibernate示例中的代码。

测试代码也几乎相同:InputStream is = new FileInputStream("Ibatis-Context.xml");XmlBeanFactory factory = new XmlBeanFactory(is);IUserDAO userdao = (IUserDAO)factory.getBean("userDAOProxy");User user = new User();user.setUsername("Sofia");user.setPassword("mypass");userdao.insertUser(user);转载保留:/java/2006/05/f070109002.html 更多内容请看Spring开源框架技术、Spring开发技术篇专题,或进入讨论组讨论。

相关文档
最新文档