Java(整合SSH框架)

目录

一.SSH整合方式一:无障碍整合

二.SSH整合方式二:将hibernate的配置交给Spring管理

三.Hibernate的模板的使用

四.单元测试

五.延迟加载问题的解决


一.SSH整合方式一:无障碍整合

第一步:创建web项目,引入jar包

  • Struts2的jar包
    • struts-2.3.24\apps\struts2-blank\WEB-INF\lib\*.jar
    • Struts2中有一些包需要了解的:
      • struts2-convention-plugin-2.3.24.jar                   ----Struts2的注解开发包。
      • struts2-json-plugin-2.3.24.jar                                 ----Struts2的整合AJAX的开发包。
      • struts2-spring-plugin-2.3.24.jar                             ----Struts2的整合Spring的开发包。
  • Hibernate的jar包
    • Hibernate的开发的必须的包   
      • hibernate-release-5.0.7.Final\lib\required\*.jar
    • MySQL驱动
    • 日志记录
    • 使用C3P0连接池:

 

 

  • Spring的jar包..........

 

第二步:引入配置文件

  • Struts的配置文件
    • web.xml
    • Java(整合SSH框架)_第1张图片

    • struts.xml-----放到src下

 

  • Hibernate的配置文件
    • hibernate.cfg.xml-----放到src下
    • 映射文件------写dao时会用
  • Spring的配置文件
    • web.xml------加载src路径的applicationContext.xml

Java(整合SSH框架)_第2张图片

 

  • applicationContext.xml------放到src下
  • 日志记录(log4j.properties)-------放到src下

第三步:创建包结构

Java(整合SSH框架)_第3张图片

第四步:创建相关类

第五步:引入相关的页面

Java(整合SSH框架)_第4张图片

第六步:新增用户add.jsp

第七步:Spring整合Struts2方式一:ActionStruts2自身创建的。(不推荐)

  • 编写Action

  • 配置Action
    • 在struts.xml中配置

 

  • 在Action中引入Service
    • 传统方式
    • 不使用传统方式,进行SpringStruts2的整合:
    • 引入struts-spring-plugin.jar:在插件包中的配置文件有如下配置

 

ps:作用就是开启一个常量:在Struts2中只有开启这个常量就会引发该代码下面的常量生效。

  • 在struts2-core-2.3.24.jar下的default.properties

ps:作用就是开启spring常量会让这些常量生效,可以Action按照名称自动注入Service

 

  • 配置service,将Service交给Spring管理-----在applicationContext.xml里进行配置

 

  • Action注入Service
  • Java(整合SSH框架)_第5张图片

第八步:Spring整合Struts2方式二:Action交给Spring管理(推荐)

  • 交给Spring可以使用AOP来进行方法的增强,非常推荐这种方式。
  • 引入插件包:struts-spring-plugin.jar

 

  • applicationContext.xml进行配置

 

  • struts.xml中进行配置

Java(整合SSH框架)_第6张图片

 

注意:

  • 需要applicationContext.xml配置Action为多例的:

 

  • 需要applicationContext.xml配置手动注入Service

 

第九步:Service调用DAO

  • 将DAO交给Spring管理--------在applicationContext.xml里配置

  • 在Service注入DAO--------第二步是在applicationContext.xml里配置

Java(整合SSH框架)_第7张图片

第十步:Spring整合Hibernate框架

  • 创建数据库和表
Create database ssh1;
Use ssh1;
CREATE TABLE `cst_customer` (
  `cust_id` bigint(32) NOT NULL AUTO_INCREMENT COMMENT '客户编号(主键)',
  `cust_name` varchar(32) NOT NULL COMMENT '客户名称(公司名称)',
  `cust_source` varchar(32) DEFAULT NULL COMMENT '客户信息来源',
  `cust_industry` varchar(32) DEFAULT NULL COMMENT '客户所属行业',
  `cust_level` varchar(32) DEFAULT NULL COMMENT '客户级别',
  `cust_phone` varchar(64) DEFAULT NULL COMMENT '固定电话',
  `cust_mobile` varchar(16) DEFAULT NULL COMMENT '移动电话',
  PRIMARY KEY (`cust_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
  • 编写实体-------在Customer.java中配置属性
  • Java(整合SSH框架)_第8张图片

Ps需要创建set和get方法。

  • 配置映射--------domain中创建Customer.hbm.xml文件

Java(整合SSH框架)_第9张图片

 

  • 在hibernate.cfg.xml中引入配置文件

Ps看是否需要修改数据库的信息。

 

  • SpringHibernate整合
    • Spring的配置文件中,引入Hibernate的配置的信息

 

  • SpringHibernate整合后,Spring提供了一个Hibernate的模板类简化Hibernate开发。
    • 改写DAO继承HibernateDaoSupport
    • 配置的时候在DAO中直接注入SessionFactory
    • DAO中使用Hibernate的模板完成保存操作
    • Java(整合SSH框架)_第10张图片

第十一步:配置Spring的事务管理

  • 配置事务管理器-------在applicationContext.xml里配置

 

  • 开启注解事务-------在applicationContext.xml里配置

 

  • 在业务层使用注解--------在CustomerServiceImpl.java里配置

 

二.SSH整合方式二:将hibernate的配置交给Spring管理

复制一个项目

Java(整合SSH框架)_第11张图片

hibernate配置文件中有哪些内容:

  • 数据库连接的配置
  • Hibernate的相关的属性的配置
    • 方言

Java(整合SSH框架)_第12张图片

  • C3P0连接池
  • 映射文件

将Hibernate的配置交给Spring

  1. 在src下配置jdbc.properties

Java(整合SSH框架)_第13张图片

    
    

   

    
    
        
        
        
        
    

   

    
    
    
        
        
        
        
            
                org.hibernate.dialect.MySQLDialect
                true
                true
                update
            
        

       

        

        
            
                com/itheima/ssh/domain/Customer.hbm.xml
            
        
    
  • 删除src下的hibernate.cfg.xml文件

三.Hibernate的模板的使用

保存操作

Java(整合SSH框架)_第14张图片

修改操作

删除操作

Java(整合SSH框架)_第15张图片

查询操作

  • 查询一个

 

  • get(Class c,Serializable id);
  • load(Class c,Serializable id);

 

  • 查询多个
  • List find(String hql,Object… args);

 

  • List findByCriteria(DetachedCriteria dc);
  • List findByCriteria(DetachedCriteria dc,int firstResult,int maxResults);

四.单元测试

Java(整合SSH框架)_第16张图片

Java(整合SSH框架)_第17张图片

五.延迟加载问题的解决

Spring提供了延迟加载的解决方案

Java(整合SSH框架)_第18张图片

  • 在web.xml里配置过滤器

Java(整合SSH框架)_第19张图片

在SSH整合开发中哪些地方会出现延迟加载

  • 使用load方法查询某一个对象的时候(不常用)

Java(整合SSH框架)_第20张图片

Ps:Lode和get方法变为一样。

  • 查询到某个对象以后,显示其关联对象。(关联的对象默认都是延迟加载)

Ps:会报错no-session。

Ps:关联对象的lazy也设置为false。(效率变低)

你可能感兴趣的:(java)