SSM和SSH的区别:
SSM指的是:
SpringMVC(相当于控制层)+Spring(管理各层的组件)+MyBatis(相当于持久化层)
SSH指的是:
Struts2(控制层)+Spring(管理各层的组件)+Hibernate(持久化层)
区别:
这里主要说一下MyBatis和Hibernate的区别
Hibernate和MyBatis的缓存机制不同
Hibernate一级缓存是Session缓存,利用好一级缓存就需要对Session的生命周期进行管理好。
Hibernate二级缓存是SessionFactory级的缓存,SessionFactory的缓存分为内置缓存和外置缓存。可以被所有session共享,它的生命周期伴随着SessionFactory的生命周期存在和消亡。
MyBatis一级缓存是SqlSession级别的缓存,二级缓存是mapper(命名空间)级别的缓存,默认情况下是没有开启二级缓存的。
要开启二级缓存只需要在sql映射文件中添加就可以了。
MyBatis的优势
MyBatis可以进行更为细致的SQL优化,可以减少查询字段。
MyBatis容易掌握,而Hibernate门槛较高。
Hibernate的优势
Hibernate的DAO层开发比MyBatis简单,Mybatis需要维护SQL和结果映射。
Hibernate对对象的维护和缓存要比MyBatis好,对增删改查的对象的维护要方便。
Hibernate数据库移植性很好,MyBatis的数据库移植性不好,不同的数据库需要写不同SQL。
Hibernate有更好的二级缓存机制,可以使用第三方缓存。MyBatis本身提供的缓存机制不佳,更新操作不能指定刷新指定记录,会清空整个表,但是也可以使用第三方缓存。
相比Mybatis,Hibernate的sql语句优化困难。