您的位置:首页 > 编程语言 > Java开发

Struts2+hibernate+hibernate框架的整合

2016-05-06 02:12 471 查看
---------------SSH(Spring4.2+Hibernate5.1+Struts2.3.28)三大框架的整合-------------
一、新建一个Web项目,并集成Spring框架
   

   1.1往lib中添加jar包Spring包

   1.2建立roesouces文件建立application.xml文件,并配置属性
   1.3在resources文件夹中建立config(Hibernate框架)和context(Spring框架)两个包名
   1.4然后再context中建立applicatio-framework.xml文件并配置步骤如下:
      1)装载数据库连接的属性内容前 --- >建立jdbc.propreties文件
      #database connection 
      connection.driver_class com.mysql.jdbc.Driver
      connection.url jdbc:mysql://127.0.0.1:3306/test
      connection.username root
      connection.password root   
      2)正式建立装载数据库连接的属性内容 
      <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
       <!--  这里的name = location 是从源文件中setLocation中得到的,因为有setLocation就可定有location属性-->
       <proprety name="location" value="classpath:jdbc.propreties"></proprety> ******(这里默认调用webContext,要让其调用类中的spring容器.xml文件)
      </bean>  
      3)配置数据源  操作数据库
        <!-- 这里的class等于是指Spring-jdbc.jar源文件中的DriverManagerDataSource的全路径-->   
      <bean  id="myDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
 <property name="driverClassName" value="${connection.driver_class}"/>
 <property name="url" value="${connection.url}"/>
 <property name="username" value="${connection.username}"/>
 <property name="password" value="${connection.password}"/>
      </bean>
         
 
二、把hibernate的SessionFactory对象整合到Spring容器进行管理
   hibernate(ORM--对象关系映射)
   
<!--class等于的是spring-orm 中的hibernate5的LocalSessionFactoryBean的全路径-->
  1. <bean id="mySessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
   
   <!--引用数据源 ref等于上面的myDataSource-->
     <property name="dataSource" ref="myDataSource">
     
    <!--  把Hibernate(orm)映射文件.hbm.xml整合到SessionFactory对象中-->  
     <property name="mappingLocations">
       <list>   
         <value>classpath:com/ssh/xml/entity/hbm/*.hbm.xml</value> ******(这里默认调用webContext,要让其调用类中的spring容器.xml文件)
      </bean>    
    
      </list>
    </property>
       <!-- 配置Hibernate额外属性 来自jabc.properties文件-->
       <property name="hibernateProperties">
       <props>
           <prop key="hibernate.dialect">${hibernate.dialect}</prop>
           <prop key="hibernate.format_sql">${hibernate.format_sql}</prop> 
           <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
           <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
       </props>
       </property>


   </bean>
 




三、配置使用AOP对业务层类中的方式进行事务管理
   1. 配置SessionFactory对象的事务管理
   <bean id="myTransactionManager"class="org.springframework.orm.hibernate5.HibernateTransactionManager">
     <properties name="sessionFactory" ref="mysessionFactory"/>
 
   </bean>
   2. <!-- 配置声明性事务管理 -->
         <!-- 2.1配置监听器 -->
       <tx:advice id="txAdvice" transaction-manager="myTransactionManager">
        <tx:attributes>
          <tx:method name="add*" propagation="REQUIRED"/>
          <tx:method name="delete*" propagation="REQUIRED"/>
          <tx:method name="update*" propagation="REQUIRED"/>
          <tx:method name="get*" propagation="REQUIRED"/>
          <!--业务异常回滚rollback-for="异常父类"-->
          <tx:method name="*" propagation="SUPPORTS" rollback-for="com.ssh.xml.common.exception.BaseBusinessException"/>
       </text:advice>
      </tx:attributes>


       <!--2.2  组成事务传播和切入点Aop面向切面编程-->
        <aop:config>
          <aop:pointcut expression="execution(* com.ssh.xml.*.service.*.*(..))" id="pcut"/>
          <aop:advisor advice-ref="txAdvice" pointcut-ref="pcut"/>
       </aop:config>


</beans>


四、配置struts2框架并交由spring框架使用
    1.在web.xml文件中配置struts2
     <!--这里才是将struts框架交由spring容器进行管理-->
    2.在resources文件下创建一个struts.xml文件
      并在里面配置<struts><constant name="struts.objectFactory" vlaue="spring"></constant></struts>
    3.在web.xml后面接着配置
      <!--  在服务器启动时候自动实例化Spring容器-->
      <!--  3.1配置初始化Spring容器监听器-->配置spring-web-4.2.5.RELEASE.jar,spring-tx-4.2.5.RELEASE.jar包
      <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
      </listener>
      <!--  3.2配置实例化spring容器的参数 这里要加上classpath:前缀,因为默认的是webContext中,这里让它调用classpath(类中的spring容器.xml文件)-->
     <context-param>
      <param-name>contextConfigLoation</param-name>
      <param-value>classpath:spring容器的名称,如果有多个spring容器直接在后面加上中间用逗号隔开</param-value>
    </context-param>




 
                                                                            16:55 2016/5/5 阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: