Hibernate,Struts2,Spring整合

整合原理

  • Struct2与Spring整合:将Action对象交与Spring容器负责创建
  • Hibernate与Spring整合:将SessionFactory交与Spring容器来维护,Spring负责Session维护及aop事务

导包

  • hibernate

    • hibernate/lib/required
    • hibernate/lib/jpa(java persist api java的持久化规范 接口)
    • jdbc包 ---- mysql-connector-java
  • Struts2

    • struts-blank.war/WEB-INF/lib/*

    • struts整合spring插件包 ---- struts2-spring-plugin

      注意:这个包一旦导入,那么struts2在启动时就会寻找spring容器.找不到将会抛出异常

  • Spring

    • 基本:4+2 ---- core|beans|context|expression|logging|log4j
    • 整合web:web包 ---- spring-web
    • 整合aop:4个 ---- spring-aop|spring-aspect|aop联盟|aopweaving
    • 整合Hibernate和事务:4个 ---- spring-jdbc|spring-tx|c3p0|spring-orm
    • 整合junit4测试:test包 ---- spring-test
  • 标签库 ---- jstl

配置Spring

  • 创建配置文件并导入约束(4个)
    beans|context|aop|tx

  • 配置Spring随项目启动

    web.xml
    
        org.springframework.web.context.ContextLoaderListener
    
    
        contextConfigLocation
        classpath:applicationContext.xml
    
    

配置Structs2

  • 配置struts2主配置文件struts.xml

  • 配置struts2核心过滤器到web.xml

    
        struts2
        
          org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
        
    
    
        struts2
        /*
    
    

struts2与spring整合

  • 配置常量

    
    
    
    
    
  • 整合

    • struts2自己创建action,spring负责组装依赖属性

      //struts.xml
      
          /index.jsp
      
      
      //applicationContext
      
      
      
    • spring负责创建action以及组装

      //struts
      
      
          /index.jsp
      
      
      //applicationContext.xml
      
      
      
          
      
      

Hibernate配置

  • 导入实体类或orm元数据

  • 配置主配置文件

    
        
        com.mysql.jdbc.Driver
        
        jdbc:mysql://39.106.1.213:3306/hb?                        characterEncoding=utf-8
        
        xxx
        
        xxx
        
        org.hibernate.dialect.MySQLDialect
    
        
        true
        
        true
    
        update
    
        
        
    
    

Spring整合hibernate

将sessionFactory对象交给spring容器管理\

  • 配置方案一:仍然使用外部的hibernate.cfg.xml配置信息


    

  • 配置方案二:不使用hibernate.cfg.xml配置文件,在spring中配置hibernate配置信息


    
        
            
            com.mysql.jdbc.Driver
            jdbc:mysql://39.106.1.213:3306/hb?                             characterEncoding=utf-8
            xxx
            xxx
            org.hibernate.dialect.MySQLDialect

            
            true
            true
            update
        
    
    
    
    
     
        
            com.ssh.demo.entity
        
      

Spring整合c3p0连接池

  • 配置db.properties

    jdbc.driverClass=com.mysql.jdbc.Driver
    jdbc.jdbcUrl=jdbc:mysql://39.106.1.213:3306/hb?characterEncoding=utf-8
    jdbc.user=xxx
    jdbc.password=xxx
    
  • 引入连接池到spring中

    
    
    
    
        
        
        
        
    
    
  • 将连接池注入给SessionFactory

    
       
        
        
            
                
                org.hibernate.dialect.MySQLDialect
    
                
                true
                true
                update
            
        
        
        
        
            
                com.ssh.demo.entity
            
        
    
    
    

Spring整合hibernate事务管理

  • Dao类创建:继承HibernateDaoSupport

    UserDaoImpl extends HibernateDaoSupport

  • hibernate模板的操作

    getHibernateTemplate()

  • spring中配置dao

    
        
    
    
    
        
    
    
    
    
        
    
    

Spring的aop操作

  • 将核心事务管理器配置到spring

    
        
    
    
  • 配置事务

    • xml

      • 配置通知

        
        
            
                
            
        
        
      • 配置织入

        
        
            
            
            
            
            
            
        
        
    • 注解

      • 开启注解事务

        
        
      • Service类中使用注解(类或方法)

        @Transactional(isolation = Isolation.REPEATABLE_READ,propagation = Propagation.REQUIRED,readOnly = false)
        

扩大session作用范围(配置filter)

​ 为了避免使用懒加载时出现no-session问题.需要扩大session的作用范围

任何Filter一定要在strutsFilter之前调用


    openSessionInViewFilter
    
        org.springframework.orm.hibernate5.support.OpenSessionInViewFilter
    


    openSessionInViewFilter
    /*

你可能感兴趣的:(Hibernate,Struts2,Spring整合)