标签:
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技术
神说,要有事务,于是就有了事务,这就是声明式事务处理
标签:
原文地址:http://www.cnblogs.com/yinquanzhe/p/5080456.html