1、having和where的区别:
where和having的执行级别不同
在查询过程中聚合语句(sum,min,max,avg,count)要比having子句优先执行.而where子句在查询过程中执行优先级别优先于聚合语句(sum,min,max,avg,count)。
having就是来弥补where在分组数据判断时的不足。因为where执行优先级别要快于聚合语句。
2、ssh的优缺点
struts2:
优点:
实现了MVC模式,层次结构清晰,使程序员只需关注业务逻辑的实现。
丰富的标签库,大大提高了开发的效率。(个人不是很会用,喜欢jstl)
页面导航,通过配置文件。使得系统脉路清晰,便于他人接手。
异常处理机制强。
可拓展性高,对其他插件支持性高。开源
拦截器实现了aop思想。
缺点:
取得jsp传递的参数有点乱,一个action处理多个简单功能参数过多的时候可以体现出来。
测试不是很方便,测试比较依赖web容器。
与servlet耦合还是比较重
hibernate:
优点:
oo,可以以完全面向对象的方式进行系统分析与设计,很java。
映射强,使用反射技术,对于处理负责的关系的时候,降低了程序员对sql的要求。
轻量级框架,性能好。
灵活性强,例如集合属性的选择就有list、set、bag等等
缺点:
限制使用的对象模型:例如一个持久性类不能对应多个表
学习成本较高。
对于大表的关联查询和处理上不是很完美,比如批量操作。往往借助jdbc某些做法。
spring:
优点:
这框架很强感觉。
IOC控制反转降低各层耦合。消除常见的单例使用过多问题
简洁aop并实现了事务处理等操作
无侵略性,模块划分很好,对其他容器的兼容很好,有效组织中间层对象。
缺点:
虽然很成熟,许多功能也集成,但是还未被标准,大型分布式系统可能有点难。(这点我未有接触过)