SSH整合实现

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SSH整合实现相关的知识,希望对你有一定的参考价值。

Java中有许多优秀的框架,表示层有StrutsJSF等,持久层有HibernateEJB等,将各层的开源框架有机整合在一起作为软件系统的主体框架,使得系统具有更好的扩展性和可维护性。

        Spring的开放性,能与大部分的对象关系映射框架较好的整合。Hibernate进行数据持久化操作时,HibernateSession接口提供了基本的数据访问方法,获得Hibernate Session对象要实现的HibernateSessionFactory实例。SessionFactory复制打开、关闭和管理session,为了解决手动创建SessionFactory实例,使用Spring管理session对象和实现声明式事务管理。那么是如何实现的呢?

    在Spring的配置文件ApplicationContext.xml中配置HibernateSessionFactory的设置。代码如下:

 
  1. <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">  
  2.     <property name="dataSource" ref="dataSource"/>  
  3.     <!-- 配置hibernate的其他的属性 -->  
  4.     <property name="hibernateProperties">  
  5.     <props>  
  6.     <prop key="hibernate.dialect">org.hibernate.dialect.mysqlDialect</prop>  
  7.     <prop key="hibernate.show_sql">true</prop>  
  8.     <prop key="hibernate.format_sql">true</prop>  
  9.     <prop key="hibernate.hbm2ddl.auto">update</prop>  
  10.     </props>  
  11.     </property>  
  12.     <!-- 配置Hibernate的映射文件 -->  
  13.     <property name="mappingResources">  
  14.     <list>  
  15.     <value>cn/itcast/shop/user/vo/User.hbm.xml</value>  
  16.     </list>  
  17.     </property>  
  18.     </bean>  

    由配置文件可以看出,用声明的方式管理SessionFactory时,可以在不同的数据源切换,持久层服务发生改变,程序代码不需要改变只需改配置文件即可。通过Spring的事务机制进行统一管理事务管理:

 
  1. <!-- 配置事务管理器 -->  
  2. <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">  
  3. <property name="sessionFactory" ref="sessionFactory"/>  
  4. </bean>  
  5. <!-- 注解事务驱动 -->  
  6.   
  7. <tx:annotation-driven transaction-manager="transactionManager"/>  

        Spring类似我们之前学习过的MVC,为了让控制器和业务逻辑组件实现分离将Struts中的Action的实例生成交给Spring容器进行管理不再由Struts负责,Struts只单纯扮演控制器的角色。StrutsAction交给Spring框架创建,默认是多例的而Spring容器在管理类的时候默认创建是单例的,单例的方式容易产生线程安全问题所以一定要配置类scope属性:

   在Spring的配置文件中:

 
  1. <bean id="userAction" class="cn.itcast.shop.user.action.UserAction" scope="prototype">  
  2.   
  3. </bean>  

   在Struts的配置文件中:

  1. <action name="user_*" class="userAction" method="{1}">  
  2.   
  3. </action>  

 

    我们知道还有voDAOServiceAction在系统中她们是如何协调的?

    在开发时我们一般都先设计实体类,这样对象在各层之间进行传递,利用Hibernate做好领域对象和数据表的映射关系。DAO层是专门独立出来对数据进行持久化,利用SpringHibernate提供DAO支持类HibernateDaoSupport来实现,每个DAO组件对应一个数据库表。Service层的开发主要是具体业务组件开发,主要用于处理各类业务逻辑。Action主要是处理Web请求,由Spring进行管理。

以上是关于SSH整合实现的主要内容,如果未能解决你的问题,请参考以下文章

SSH框架整合配置所需JAR包(SSH整合)

SSH整合

SSH整合做CRUD(大神老师整理)

ssh-ssh整合(Struts2+Sprinig+hibernate)

ssh整合问题总结--在添加商品模块实现图片(文件)的上传

SSH整合