面试归来



技术面试官叫我谈谈 ssh优缺点



平时用起来倒是挺顺手..但是从来没有系统的总结过..导致很多点会都没有说出来..



这次我认真总结了一下...





常说的好处 开源

常说的坏处 配置文件过大我就不提了





struts 



优点:

          收集,验证表单数据相比传统servlet简单

          优雅的实现可配置的请求转发



缺点:

          属侵入设计(actionform,action都无法复用)

          与serlvetAPI严重耦合..无法摆脱容器

          action与web层耦合.不方便测试

          标准struts的action是非线程安全(很多简历上写着"精通Struts"的高手们都忽视的问题)



不熟悉:

          struts标签库没怎么用过(常用jstl)

          国际化只学过,没用过.停留在demo级别

          validation.xml(配置文件写多了,有时候也想逃避)

          支持表现层技术单一(一直作为struts的缺点来说...但是我也就会jsp而已)





Spring 



优点:

          IoC虽然不好形容,但是我从最开始接触spring时就觉得这是个很大的优点

          aop(我自己写过的aop就只有日志...)

          对象容器

                管理对象的生命周期(集成struts摆脱线程问题)

          测试也变得方便

          多数代码没有侵入spring的API

          对于hibernate有很好的支持



          还有很多好处(权限,email支持,调度任务,权限,事务等等),我把我知道的对于ssh的尽量总结出来



缺点:

          缺点我不好提出来..without ejb我没看过..甚至ejb我也不会..

          我也就简单用用...不过我听说过这些缺点(如果有错请及时指正)



          如果开发者设计不出合理的接口.导致一改就改多处.反而造成不便

          不支持分布式部署。

          不是一站式方案(开放的体系和封闭的体系这种话题我从来参与不进去..但是还是常看看的)

使用了反射来管理其容器中的bean,在程序中增大了内存和运行计算的时间,当然,这和spring带来的管理方便的好处来比,可以把此缺点忽略不计。 





hibernate 



优点:

          ORM 使数据层更加对象化..摆脱所谓的阻抗不匹配

          sql方言的存在使得开发不用过多考虑 数据库差异 的问题

          非侵入式设计 



缺点:

          个人感觉熟练使用的话曲线太陡..(尤其对于多表间复杂查询)

不太适合做复杂的select语句查询



不熟悉:

          Transaction(一般都直接交给spring了..接触不错..demo级别)

          缓存机制(Session的缓存和SessionFactory的缓存(内置缓存和外置缓存))

聚集性操作数据(这种时候jdbc也白费吧...还是存储过程)



错觉:

          hibernate对于瑕疵的处理不够

          比如:有entity-name的映射 save 就抛错这是我很久以前就发现的问题..一直没有得到修正..难道这不是问题?





可能高手从我总结就可以看出我水平有多菜....



不过还是不要吝惜口水 喷我吧..



在javaeye被喷 只会使我进步  面试时候被喷 少的就是机会了

内容更改记录:

javaeye_id 修改原因(也就是回复部分内容)
xiaoyuqi00 hibernate优点:非侵入式设计

这点我不怎么认同,如果你用hql的话很数据层就很麻烦了,虽然hibernate支持sql但是既然用hibernate,那首选肯定是hql或者criteria
geeksun

使用了反射来管理其容器中的bean,在程序中增大了内存和运行计算的时间,当然,这和spring带来的管理方便的好处来比,可以把此缺点忽略不计

blackstreet 不太适合做复杂的select语句查询

ssh优缺点的更多相关文章

  1. SSH框架优缺点

    SSH框架优缺点 开源是3个框架共有的优点 Struts2框架(MVC框架)的优点如下: 1)  实现了MVC模式,层次结构清晰,使程序员只需关注业务逻辑的实现: 2)  丰富的标签库,大大提高了开发 ...

  2. SSH深度历险(十一) AOP原理及相关概念学习+xml配置实例(对比注解方式的优缺点)

    接上一篇 SSH深度历险(十) AOP原理及相关概念学习+AspectJ注解方式配置spring AOP,本篇我们主要是来学习使用配置XML实现AOP 本文采用强制的CGLB代理方式 Security ...

  3. SSH框架阶段 ——SSH的优缺点,使用场景?

    Hibernate优点: (1) 对象/关系数据库映射(ORM)它使用时只需要操纵对象,使开发更对象化,抛弃了数据库中心的思想,完全的面向对象思想(2) 透明持久化(persistent)带有持久化状 ...

  4. SSH开源框架的优缺点

    js+servlet+javabean的开发模式需要写很多的重复代码,比如固定的doGet()方法,而且它的控制跳转不灵活,往往一个问题处理需要两个.java文件,而且当采用MVC模式开发时有很大的耦 ...

  5. [JavaEE] SSH框架笔记_S.S.H框架各自的优缺点

    Struts的原理和优点.Struts工作原理MVC即Model-View-Controller的缩写,是一种常用的设计模式.MVC 减弱了业务逻辑接口和数据接口之间的耦合,以及让视图层更富于变化.M ...

  6. 整理SSH框架的优缺点

    Hibernate优点(1) 对象/关系数据库映射(ORM)它使用时只需要操纵对象,使开发更对象化,抛弃了数据库中心的思想,完全的面向对象思想(2) 透明持久化(persistent)带有持久化状态的 ...

  7. 开源的SSH框架优缺点分析

    开源是3个框架共有的优点 Struts2框架(MVC框架)的优点如下: 1) 实现了MVC模式,层次结构清晰,使程序员只需关注业务逻辑的实现: 2) 丰富的标签库,大大提高了开发的效率: 3) Str ...

  8. SSH面试题收藏

    Hibernate工作原理及为什么要用? 原理: 1. 读取并解析配置文件2. 读取并解析映射信息,创建SessionFactory3. 打开Sesssion4. 创建事务Transation5. 持 ...

  9. java面试题之ssh

    1.写出你熟悉的开源框架以及各自的作用(项目中为什么使用SSH) 答:框架:hibernate,spring,struts1/struts2. Hibernate主要用于数据持久化:封装了JDBC操作 ...

随机推荐

  1. [ExtJS5学习笔记]第二节 Sencha Cmd 学习笔记 使你的sencha cmd跑起来

    本文地址: http://blog.csdn.net/sushengmiyan/article/details/38313537 本文作者:sushengmiyan ----------------- ...

  2. Aandroid TV 基于Leanback支持最新MD设计的TV开发框架

    原文地址:http://blog.csdn.net/sk719887916 作者:skay 基于6.0最新的API 支持TV的框架 Android 6.0已完美支持TV开发,之前的5.0后Recycl ...

  3. 通过一个工具类更深入理解动态代理和Threadlocal

    动态代理和Threadlocal 一个代理类返回指定的接口,将方法调用指定的调用处理程序的代理类的实例.返回的是一个代理类,由指定的类装载器的定义和实现指定接口指定代理实例调用处理程序最近用到一个工具 ...

  4. Linux中的端口占用问题

    本文将会阐述两种解决端口占用的方法. 本文会用到的服务器端的程序如下: #include "unp.h" #include <time.h> int main(int ...

  5. XML解析之JAXP案例详解

    根据一个CRUD的案例,对JAXP解析xml技术,进行详细的解释: 首先,已知一个xml文件中的数据如下: <?xml version="1.0" encoding=&quo ...

  6. 小强的HTML5移动开发之路(6)——Canvas图形绘制基础

    来自:http://blog.csdn.net/dawanganban/article/details/17686039 在前面提到Canvas是HTML5中一个重要特点,canvas功能非常强大,用 ...

  7. json进阶(一)js读取解析JSON类型数据

    js读取解析JSON类型数据 一.什么是JSON? JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式,同 ...

  8. (十八)TableView实践(多组汽车品牌展示)

    对于多组数据,可能会用到模型的嵌套. 例如多组汽车,每组是一个模型,组内有多辆车的信息,每辆车的信息也是一个模型,相当于模型中有模型. 可以看到,每个item是一个字典,这要创建一个模型,而模型内部的 ...

  9. RecyclerView+Cardview学习探索

    1.概述 在support-V7包中引入了很多新的M 控件,其中RccyclerView也是其中一员,它的名字来源于它的工作方式:当一个Item被隐藏起来时候并没有被销毁,当建立新的item时候,组件 ...

  10. mysql进阶(十一)外键在数据库中的作用

    MySQL外键在数据库中的作用 MySQL外键的目的是控制存储在外键表中的数据,使两张表形成关联,是MySQL数据库中非常重要的组成部分,值得我们去深入了解.那么,MySQL外键究竟起到哪些作用呢?下 ...