Spring,Struts2,Hibernate,SpringMVC,Mybaties基础
2018-03-13 10:44
281 查看
Spring
spring框架是由于软件开发的复杂性而创建的,Spring使用的是基本的JavaBean来完成以前只能由EJB才能完成的事情,然而Spring的用途不仅仅限于服务器端的开发目的:解决企业开发的复杂性
功能:使用基本的JavaBean代替EJB,并提供更多的企业应用功能
范围:任何java应用
Spring是一个轻量级控制反转(IOC)和面向切面(AOP)的容器框架
Spring的基本组成:
1.最完善的轻量级核心框架2.通用的事务管理抽象层
3.JDBC抽象层
4.集成了Tophink,Hibernate,JDO,iBatis,Sql等
5.AOP功能
6.灵活的MVC Web应用框架
优点:
1.JE22应该更加容易使用
2.面向对象的设计比任何实现技术都重要
3.面向接口编程,而不是针对类编程,Spring将使用接口的复杂度降低到零
4.代码应易于测试
核心容器:
是Spring框架最基础的部分,他提供了依赖注入特征来实现容器对Bean的管理,这里最基础的概念是BeanFactory,它是任何Spring应用的核心,BeanFactory是工厂模式的一个实现,它使用IOC将应用配置和依赖说明从实际应用代码中分离出来应用上下文模块(Spring Context)
核心模块的BeanFactory使String成为一个容器,而上下文模块使它成为一个框架,这个模块扩展了BeanFactory的概念,增加了对国际消息、事件传播以及验证的支持,另外这个模块提供了很多企业服务,例如:电子邮件,JDNI访问,EJB集成,远程以及时序调度服务,也包括了模板框架,例如:velocity(速度)和FreeMarker集成的支持(模板引擎)Spring的AOP模块(API应用程序编程接口)
Spring在它的AOP模块中提供了对面向切面编程的丰富支持,这个模块是在Spring应用中实现切面的基础,为了确保Spring与其他AOP框架的互用性,Spring的AOP支持基于AOP联盟定义的API,AOP联盟是一个开源项目,它的目标是通过定义一组共同的接口和组件来促进AOP的使用以及不同的AOP实现之间的互用性,通过访问他们的站点,你可以找到关于AOP联盟的更多内容。JDBC和抽象DAO模块
使用JDBC经常导致大量的重复代码,取得连接,创建语句,处理结果集,然后关闭连接,Spring的JDBC和DAO模块抽取了这些重复的代码,因此可以保证数据库的访问代码干净整洁,并且防止因关闭数据资源失败而引发的问题,另外,还是用了Spring的AOP为Spring应用了的对象提供了事务管理服务。对象/关系映射集成模块
Web上下文模块建立与应用上下文模块之上,提供了一个适合于Web应用的上下文,另外,模块还提供了一些面向服务支持。Spring的MVC框架
为构建Web应用提供了一个功能全面的MVC框架,虽然Spring可以很容易与其他MVC框架集成,例如:struts但Spring的MVC框架使用IOC对控制逻辑和业务对象提供了完整的的分离,Spring的MVC框架还可以利用Spring的任何其他服务,例如:国际化信息与验证。SpringMVC
应用:分离了控制器,模型对象注解
@controller 声明控制器
@Request Mapping("/")声明URL
@Autowired业务接口注入
在代码上加上注解,可以省去多个配置文件的工作,达到简单的MVC的处理请求响应
Struts2
是基于MVC设计模式的Web应用框架,它的本质上相当于是一个servlet,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts2从WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与servletAPI完全脱离开拦截是AOP的一种实现策略,拦截器是动态拦截Action调用的对象
拦截器的原理:当请求到达Struts2的servletDispatcher时,Struts2会查找配置文件,并配置实例化相对的拦截器对象,然后串成一个列表(List),最后一个一个的调用列表中心的拦截器
出现漏洞:
Struts2曝出两个高危安全漏洞,一个是使用所写的导航参数前缀是的远程代码执行漏洞,另一个是使用缩写的重定向参数前缀是的开放式重定向漏洞,这些漏洞可以使用黑客取得网站的“最高权限”,从而使企业服务器变成黑客手中的“肉鸡”。
Hibernate对象关系映射框架
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将pojo与数据库表建立映射关系,是一个全自动的ORM框架,Hibernate可以自动生成SQL语句,自动执行,使得JAVA程序员可以使用对象编程思想来操控数据库,Hibernate可以应用在任何使用JDBC的场合,既可以在JAVA的客户端程序使用,可以完成数据持久化的重任。Hibernate的核心API(6个)
Session,SessionFactory,Transaction(事务),Query,Criteria(标准)和Configuration(布局)通过这些借口,可以对持久化对象进行存取,事务控制
Hibernate主键的创建:
1.自动生成:native2.手动增加的时候:assigned,identity都代表自增的意思
SQL,MySql都选择identity自增。Oracle使用sequence
hibernate中处于一级缓存中的对象永远不会过期,除非应用程序显示清空缓存或者清除对象必须提供数据过期策略
Hibernate将JAVA对象之间的关系转为数据表之间的关系
Hibernate缓存
一级缓存
当应用程序调用session的save(),update(),saveOrUpdate(),get()或load(),以及调用查询接口的list(),iterate()或filter()方法,当清理缓存时,Hibernate会根据缓存中对象的状态变化来同步更新数据库。Session为应用程序提供了两个管理缓存的方法:clear()清空缓存中所有持久化对象二级缓存
是针对于ID查询的缓存策略SessionFactory查询缓存
对于经常使用的查询语句,如果启用了查询语句,当第一次执行查询语句时,Hibernate会将查询结果存储在二级缓存中,以后再次执行该查询语句时,从缓存中获取查询结果,从而提高查询性能。Hibernate的查询缓存主要针对普通属性结果集的缓存,而对于实体对象的结果集只缓存ID;Hibernate工作原理
1.通过Configuration(),configure(),读取并解析Hibernate,cfg,xml配置文件2.有Hibernate.cfg.xml中的<mapping resource="com/xx/USER.hbm.xml"/>读取解析映射信息
3.通过config,buildSessionFactory();得到sessionFactory
4.sessionFactory.openSession();得到session
5.session.beginTransation();//开启事务
6.persistent operate;
7.session.getTransaction().commit();//提交事务
8.关闭session;
9.关闭SessionFactory;
Hibernate优点
1.封装了JDBC简化了很多重复代码2.简化了dao层编码工作,使开发更加对象化
3.移植性好,支持各种数据库
4.支持透明持久化,因为Hibernate操作的是纯粹的java类,没有实现任何接口,没有侵入性,所以说它是一个轻量级的框架
Hibernate延迟加载
get不支持延迟加载,load支持延迟加载(节省内存的开销,从而提高了服务器的性能)MyBaties
是一个基于SQL映射支持java和.NET的持久层框架,是一个半自动化的“ORM”实现
Spring+Struts2+Hibernate和Spring+SpringMVC+Mybaties异同
(Spring+Struts2+Hibernate将配置文件开发用到极致,Spring+SpringMVC+Mybaties将注解开发用到极致)SSH通常指的是Struts2做控制器,Spring管理各层的组件,Hibernate负责持久化层
SSM通常是指SpringMVC做控制器。Spring管理各层的组件,Mybaties负责持久化
相同点:
1.Spring依赖注入DI来管理各层的组件2.使用面向切面编程的AOP管理事务、日志、权限等
不同点:
Struts2和SpringMVC1.Struts2和SpringMVC控制器(controller)控制视图和模型的交互机制不同
2.Struts2是Action类级别,SpringMVC是方法级别的拦截,拦截一个方法对应一个request上下文,而方法同时又跟一个URL对应,所以说从框架本身上SpringMVC就容易实现restFul的URL,而Struts2其属性却被所有方法共享,这也就无法用注解或者其他方式表示其所属的方法
3.SpringMVC方法基本上是独立的,独享request,response数据,方法之间不共享变量,而Struts方法之间也是独立的,但其所有Action变量是共享的,这不影响程序运行,却给编码,读程序时带来了麻烦,每次的请求都需要创建一个Action,一个Action对象对应一个request上下文
4。由于Struts2需要针对每一个request进行封装,把request,session等servlet生命周期的变量封装成一个个Map,供给每个Action使用,并保证线程的安全,所以在原则上是比较耗费内存的。
5.拦截器实现机制上,Struts2有自己的Interceptor(拦截)机制,SpringMVC用的是独立的AOP方式,这样导致Struts的配置文件量比SpringMVC大
6.SpringMVC开发效率和性能高于Struts2
7.Struts2是通过Filter实现的请求转发(或者说请求的初步处理)和初始化操作,SpringMVC是通过servlet实现的请求转发和初始化
8.SpringMVC集成了Ajax使用非常方便,只需要一个注解@ResponseBody就可以实现,然后直接返回响应文本即可,而Struts2拦截器集成了Ajax,在Action中处理时,一般必须安装插件或者自己写代码集成进去,使用起来相对不方便
9.设计思路上,Struts2更加符合OOP的编程思想,SpringMVC就比较谨慎,在servlet上扩展
Hibernate和MyBaties
Hibern
a61f
ate和Mybaties都支持JDBC和JTA事务处理
Mybaties优势:
MyBaties可以进行更加细致的SQL优化,可以减少查询字段,容易掌握,而Hibernate门槛较高
Hibernate优势:
Hibernate的Dao层开发比Mybaties简单,Mybaties需要维护SQL和结果映射,Hibernate对对象的维护和缓存要比Mybaties好,对增删改查的对象维护要方便,封装性能好,屏蔽了数据库差异,但应对数据库能力较弱,SQL语句优化困难,Mybaties则相反
相关文章推荐
- SpringMVC、Spring、Hibernate整合基础配置
- 【Java EE (Struts2 + Spring + Hibernate)开发】:Web 之 【JSP基础知识】
- spring原理 struts2原理 hibernate原理 MyBatis原理 SpringMVC
- 基于maven的多框架和多视图融合技术(Struts1、Struts2、Spring、SpringMVC、Hibernate、Ibatis、MyBatis、Spring Data JPA、DWR)
- spring 、springMVC、struts2、hibernate 、mybatis
- Java中的Hibernate、Struts2、Spring基础DAO调试过程
- Spring基础五之Springmvc和hibernate事务不提交
- 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?
- Struts2、Spring、SpringMVC各自对应的器
- spring整合struts2和hibernate在删除关联数据的时候特别注意
- Struts2、Spring、Hibernate的添加
- Struts2,Hibernate,Spring自定义配置文件路径
- Spring-SpringMVC-Hibernate整合
- 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?
- Struts2.x、Spring3.x、Hibernate3.x整合开发
- Spring2.5.6+Struts2+Hibernate3.6.7+DWR3.0 注解(Annotation)式配置
- Struts2、Spring和Hibernate应用实例
- 学习笔记-----------------struts2 hibernate3 spring2.5整合
- 【JavaWeb-25】事务管理相关知识、手动/半自动/自动管理事务案例、整合Junit、整合Web、spring和hibernate整合、struts2和spring整合
- SpringMVC学习系列(12) 完结篇 之 基于Hibernate+Spring+Spring MVC+Bootstrap的管理系统实现