码迷,mamicode.com
首页 > 其他好文 > 详细

SSH整合

时间:2015-12-27 18:59:08      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:

ssh 是struts2+spring+Hibernate 三个之间的整合;

1,struts2

-------开源MVC框架,可以快速开发MVC项目,接请求给予响应,,可以快速处理上传和下载,

2 ,spring

-------IOC容器框架,管理各种对象,

------自动单例,自动事物处理,自动管理对象,

3.hibernate

-----开源全自动ORM框架,使用完全面向对象的方式操作数据库;

---------------- 项目分层 -------------------

1.action:控制层,负责接收请求和作出响应,控制页面之间的跳转
2.service:业务逻辑层,处理系统中的业务逻辑,比如登录、注册、买东西、下订单....
3.dao:数据持久化层,主要处理数据的增删改查
4.entity:模型层

 

---------------- WEB项目使用Spring -------------

1.导入spring.jar
2.web.xml配置Spring自启动:
    <listener>
        <listener-class>
            org.springframework.web.context.ContextLoaderListener
        </listener-class>
    </listener>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>


--------------- Spring整合Struts2 ----------------

1.导入struts2-spring-plugin-2.3.16.3.jar
2.使用Spring完成Action,Service,DAO各层的解耦:
    -- 为action中的service对象提供set方法,在spring中配置一个同名bean
    -- 为service中的dao对象提供set方法,在Spring中配置依赖关系
    
    Action中使用service对象的时候,spring可以自动处理依赖关系,
    spring很智能,可以根据名字自动注入
    
--------------- Spring+Hibernate ----------------

由Spring管理SessionFactory:
XML映射:
org.springframework.orm.hibernate3.LocalSessionFactoryBean

注解映射:
org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean
    <!-- 指定包路径,自动扫描实体类 -->
    <property name="packagesToScan" value="demo.**.entity"></property>


Dao层实现类可以继承Spring提供的HibernateDaoSupport,
HibernateDaoSupport类中拥有一个hibernateTemplet对象,可以方便的处理增删改查,
在实现类中直接this.getHibernateTemplate()就可以得到这个对象,

HibernateDaoSupport类中的hibernateTemplet对象默认为null,需要赋值,


在spring中配置:
    <!-- 创建一个hibernateTemplate对象,注入sessionFactory -->
    <bean id="ht" class="org.springframework.orm.hibernate3.HibernateTemplate">
        <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>
    
    把Template对象注入DAO对象中:
    <bean id="liuyanDao" class="demo.xk.dao.impl.LiuyanDaoImpl" >
        <property name="hibernateTemplate" ref="ht"></property>
    </bean>
    
    

hibernateTemplet执行增删改查时默认调用session.flush(),但是不会提交,
会执行sql语句,但是结果最终不会提交到数据库。

当程序改造到这里的时候,可以查询,但是增删改功能只有sql但是不会生效,


我们可以使用hibernate中的自动提交功能:
<property name="hibernate.connection.autocommit">true</property>
这个配置会使所有的语句立即生效,
但是结果很糟糕,破坏了事务完整性,这只是一个临时测试的方案,千万别用于实际开发。


------------------ 声明式 事务处理 -----------------

声明:说一下
式:方式
事务处理:把多项操作视为一个整体


声明式事务处理 = 采用说一下的方式进行事务处理


事务处理示例:

结算 = 扣用户余额 + 减少库存 + 生成订单 + 建立物流

流程:
--启动事务
-- userDao
-- productDao
-- ordersDao
-- wuliuDao
--提交事务

如果四个操作中任意一项出现问题,所有数据都该回滚

事务应该放在service中,
声明式事务处理使用的是AOP技术

神说,要有事务,于是就有了事务,这就是声明式事务处理

SSH整合

标签:

原文地址:http://www.cnblogs.com/yinquanzhe/p/5080456.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!