Struts spring ibatis的集成(连载一)---转
关键词:
ibatis
ibatis集成spring
dwr集成spring
内容:
当前软件开发中ssh框架集成司空常见,相信大家都会做。ibatis是一种非常优秀的持久层框架,那么ibatis如何与spring集成在一起呢。注意我没有明确说ibatis和struts集成在一起,原因在于ssh中struts与spring的集成,在ss+ibatis中没有区别。
1. Struts和spring的集成
很多时候,我使用dwr(ajax框架)。所以我使用监听器的方式集成struts与spring。以利于dwr与spring集成。
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>
org.apache.struts.action.ActionServlet
</servlet-class>
……..
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<!-- dwr框架 -->
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>
org.directwebremoting.servlet.DwrServlet
</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
<!-- spring集成struts -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/applicationContext.xml,/WEB-INF/action-servlet.xml,/WEB-INF/bo-dao.xml
</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
……..
</web-app>
dwr.xml的使用
dwr框架可以直接使用spring容器里的BO bean
本例中findAll( )方法返回客户的list
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.org/dwr/dwr20.dtd">
<dwr>
<allow>
<create creator="spring" javascript="JCustomer">
<param name="beanName" value="customerBO" />
<include method="findAll"/>
</create>
<convert converter="bean" match="com.esale.to.CustomerTO"></convert>
</allow>
</dwr>
2. ibatis与hibernate的横向比较之我见
两者都是优秀的持久层框架。Hibernate是对象关系映射产品(orm),全自动的。ibatis的作者认为ibatis是一种半自动的数据映射器框架(data mapper)。
使用hibernate的人,不需要了解sql,除非你基于性能的考虑,例如hibernate的分页性能就比较差,原因在于hibernate要查询出所有的记录而不是当前页的记录。
使用ibatis的人需要熟练sql,项目中大量的查询让sql高手使用ibatis的时候如鱼得水,极致性能。
核心区别我的理解:
select * from users where username=? and password=?;
这是一条sql语句,ibatis把这条sql语句映射为函数,username和password的实际值作为函数参数,返回值做为一个实体对象或者实体对象的列表,就是查询结果集的封装。
hibernate不关心sql语句,sql由框架来生成。它关心表和类的对应关系,称之为映射。
比如tbl_user表对应UserTO类(传输值类),表中的列一一对应实体类的属性。类和表的映射关系一旦建立。类等于表,表中的一条记录就是类的一个实例对象。只不过这个对象可能处于transient、persistant或者detached状态。
开发中hibernate对增加删除和修改有利,对复杂查询不利。
ibatis的crud操作都比较好,对高性能和高难度的查询更加有利,唯一的缺点在于半自动化。
3. ibatis与spring的集成
3.1 SqlMapConfig.xml相当于hibernate.cfg.xml文件,数据源由spring管理,看后面
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<settings useStatementNamespaces="true" />
<sqlMap resource="com/eHome/dao/impl/User.xml" />
<sqlMap resource="com/eHome/dao/impl/Article.xml" />
</sqlMapConfig>
3.2 User.xml与UserDAOImpl.java类,相当于hibernate的实体类与实体类的映射文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="user">
<typeAlias alias="userTO" type="com.eHome.entity.UserTO" />
<select id="selectByUserName" resultClass="userTO"
parameterClass="string">
select * from users where userName=#userName#
</select>
<insert id="insert" parameterClass="userTO">
insert into users values(#userName#,#password#,#realName#,#sex#)
<selectKey resultClass="int" keyProperty="userId">
SELECT @@IDENTITY AS userId
</selectKey>
</insert>
</sqlMap>
public class UserDAOImpl extends SqlMapClientDaoSupport implements UserDAO {
/**
* 根据用户名查找一名用户
*/
public UserTO findByUserName(String userName) {
UserTO user = (UserTO) this.getSqlMapClientTemplate().queryForObject(
"user.selectByUserName", userName);
return user;
}
/**
* 保存一个用户
*/
public Integer save(UserTO user) {
return (Integer) this.getSqlMapClientTemplate().insert("user.insert", user);
}
}
注意红色部分配置文件中sql语句与dao方法的对应关系。
3.3 最后spring集成ibatis
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<!-- 数据源 -->
<bean id="ds" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="net.sourceforge.jtds.jdbc.Driver">
</property>
<property name="url"
value="jdbc:jtds:sqlserver://localhost:1433/ownHome">
</property>
<property name="username" value="sa"></property>
<property name="password" value="ok"></property>
</bean>
<!-- 相当于hibernate会话工厂的sqlMapClient -->
<bean id="sqlMapClient"
class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation">
<value>classpath:com/eHome/dao/SqlMapConfig.xml</value>
</property>
<property name="dataSource">
<ref bean="ds" />
</property>
</bean>
<!-- hibernate中dao类依赖会话工厂,此处 -->
<bean id="userDAO" class="com.eHome.dao.impl.UserDAOImpl"
abstract="false" lazy-init="default" autowire="default"
dependency-check="default">
<property name="sqlMapClient">
<ref bean="sqlMapClient" />
</property>
</bean>
<!—bo对dao的依赖 -->
<bean id="userBO" class="com.eHome.service.UserBO" abstract="false"
lazy-init="default" autowire="default" dependency-check="default">
<property name="userDAO">
<ref bean="userDAO" />
</property>
</bean>
……
</beans>
引用:
http://www.cnblogs.com/TitanNJ/archive/2009/05/26/1489329.html
分享到:
相关推荐
在IT行业中,集成Spring、Struts和iBatis与MySQL是构建企业级Java Web应用程序的常见选择。这个项目集成了Spring 2.5.5、Struts 2.1.6、iBatis 2.3.4以及MySQL 5.1数据库,使用IntelliJ IDEA 9作为开发环境。下面将...
Struts1.2、Spring2和iBatis是经典的Java Web开发框架,它们的集成可以构建出高效、灵活的企业级应用程序。在这个项目实战源码中,我们可以深入学习这三大框架如何协同工作,以及如何在实际开发中应用它们。 首先,...
4. 集成应用:Struts、Spring和iBatis的集成,通常称为SSi框架,能够充分利用各自的优点。Spring作为核心,可以管理Struts的Action和iBatis的数据访问对象,实现事务控制。Struts处理HTTP请求,转发到Spring管理的...
Spring、Struts和iBatis是Java开发中的经典组合,常被称为"SSI"架构,用于构建企业级Web应用程序。这个组合充分利用了各自框架的优势,提供了一个强大的、灵活的和可扩展的解决方案。 Spring框架是核心,它是一个...
Struts2+Spring+Hibernate和Struts2+Spring+Ibatis是两种常见的Java Web应用程序集成框架,它们分别基于ORM框架Hibernate和轻量级数据访问框架Ibatis。这两种框架结合Spring,旨在提供一个强大的、可扩展的、易于...
标题中的"spring+struts+ibatis"是指一种经典的Java Web开发架构,也被称为SSM框架。这个架构结合了Spring框架、Struts2框架和iBatis(现在称为MyBatis)来构建高效且可维护的Web应用。下面将详细阐述这三个框架以及...
标题中的"spring.struts,ibatis集成包"是指将Spring、Struts和iBATIS这三种技术框架整合在一起的软件包。这种集成旨在提供一个高效、灵活且可扩展的Web应用程序开发环境。Spring作为核心框架,负责管理应用的业务...
此外,Spring与Hibernate、iBatis等数据访问框架集成,简化了数据库操作。 3. **iBatis**:iBatis是一个SQL映射框架,它将SQL语句与Java代码分离,提高了代码的可读性和可维护性。开发者可以编写SQL语句并直接在XML...
Struts2、Spring和iBatis是Java Web开发中非常重要的三个框架,它们分别负责MVC模式中的Action层、业务逻辑层以及数据访问层。这三个框架的整合可以提供一个高效且灵活的开发环境,帮助开发者构建出结构清晰、易于...
Struts2、Spring和Ibatis是...总之,这个实例展示了如何在Java Web开发中集成Struts2、Spring、Ibatis和JSON,实现前后端数据交互。通过理解这些技术的工作原理和相互配合,开发者可以构建出高效、可维护的Web应用。
Struts、Spring、iBatis和MySQL是Java Web开发中常用的四大框架,它们共同构建了一个高效、灵活且可扩展的应用程序架构。这个整合实例提供了基于这些技术的源码,可以帮助开发者深入理解它们如何协同工作。 Struts...
通过学习和实践Spring_Struts_Ibatis_Mysql Demo,开发者可以深入了解这些技术的集成和协同工作方式,为构建自己的Java Web应用打下坚实基础。同时,这也是一个很好的起点,可以帮助初学者逐步掌握Web开发中的各种...
在 "17-Prj-Spring-Struts-IBatis-AOP-Transaction" 这个项目中,这四个框架被集成在一起,形成一个强大的 web 应用开发解决方案。Spring 作为整个系统的基石,负责依赖注入和事务管理;Struts 2 处理 HTTP 请求,...
通过这个项目,开发者可以深入理解Struts2、Spring、iBatis以及MySQL的集成方式,了解它们如何协同工作以完成Web应用的基本功能。在实际开发中,这种架构提供了良好的分层和模块化,有利于项目的扩展和维护。
Struts2、Spring和iBatis是Java Web开发中经典的三大框架,它们组合起来可以构建出高效、可维护的企业级应用程序。本项目旨在为初学者提供一个基础的入门指南,帮助理解并掌握这三个框架的集成与使用,实现CRUD...
Struts、Spring 和 iBatis 是 Java Web 开发中三个非常重要的开源框架,它们共同构建了一个灵活、可扩展且易于维护的系统架构。这个"Struts+Spring+Ibatis示例"提供了一个基础的整合应用,帮助开发者理解这三者如何...
SSI框架是指Struts、Spring和iBatis的集成,这三种框架分别负责MVC模式中的表现层、业务层和数据访问层。本教程将详细介绍如何在特定环境下搭建一个基于SSI的项目,并添加切面事务处理功能。 1. **环境配置** - ...
Struts2、Spring和iBatis是Java Web开发中常用的三个框架,它们分别负责MVC模式中的Action层、业务逻辑层以及数据访问层。将这三个框架整合在一起,可以构建出高效、灵活的企业级应用。 **Struts2** 是一个基于MVC...
通过上述步骤,可以成功地将Spring、Struts和iBatis这三个框架集成到一起,搭建出一个完整的Java Web应用程序架构。这样的架构不仅提供了灵活的应用程序开发方式,还能够很好地支持MVC模式的设计思想,使得应用程序...
Struts、Spring 和 iBatis 是 Java Web 开发中常用的技术框架,它们组合起来可以构建出功能完善的业务应用。在本项目中,我们将探讨如何利用这三个框架实现数据的增删改查(CRUD)操作。 Struts 是一个基于 MVC...