SSH框架 简单使用 2019-06-17 程序之旅,记录 暂无评论 905 次阅读 ## SSH框架 入职后不就开始接手一个项目,这个项目有点年份,貌似是05年开发的java后台项目。 其项目经过很多人的手,不同的人编码风格不一样,甚至连使用的框架都不一样。项目一部份使用的是dorado的一个开发工具来进行项目开发,一部分使用的ssh来进行来发,其中有一小部分使用的是spring boot结合hibernate来进行开发,总的来说就是个大杂烩。 在前家公司一直使用的是ssm框架和spring boot集成,没有涉及到SSH框架的具体使用。记得有一次面试一个刚毕业小女孩,问你毕业设计使用的是什么框架,她回答说,使用了SSM,我继续问SSM分别指的是什么和具体使用,她回答:“SSM就是Spring、Struts2和Mybatis”。我当时误以为她说错了,后来我仔细看了看,才发现小女孩并没有说错(哭笑)。 这几天简单搭建了一下SSH,其简单实现了SSH的用户查询与存储功能。 [项目地址](https://github.com/lrteaegg/ssh.git "项目地址") 为了更好的学习SSH框架,就拿大学时使用的SSM框架搭建的旅游系统进行比较。 > 旅游系统写的有点乱,其中有涉及到servlet的操作,不过页面特效还是很给力的:) [旅游系统](https://github.com/lrteaegg/travelSystem.git) ### 比较mybatis与hibernate的区别 mybatis与hibernate都是比较常用的持久层框架,都是通过XML配置文件生成sessionFactory,之后由工厂sessionFactory生成数据库的连接会话session,且都是实现ORM面向对象编程,文件XML都是可以由spring进行管理。再也不需要使用jdbc进行底层实现数据库连接,大大提高编程效率。 #### 从开发方面 mybatis属于半自动话,SQL语句需要手动编写,SQL语句存放在一个独立的xml文件中,操作起来相对hibernate来说比较繁琐。例如: ``` # Mybatis 手动编写SQL语句取数据 update t_address set province=#{province},city=#{city},area=#{area},user_address=#{userAddress} where id = #{id} ``` > 映射到updateAddress()方法 hibernate在开发中,SQL语句已经封装好,直接调用hibernate接口下的方法即可。hibernate也能够自定义SQL语句,管理起来并没有像mybatis放在xml文件中,而是在方法体上的注解中编写。例如: ``` @Resource(name = "sessionFactory") private SessionFactory sessionFactory; @Override public User getUser(Integer id) { Session session = sessionFactory.getCurrentSession(); User user = session.get(User.class, id); // 调用封装好的sql方法 return user; } ``` #### SQL方面 显而易见,mybatis的SQL语句全权由自行编写,在SQL灵活应用上比较有优势,并且系统调用性能上会比hibernate好点。 hibernate的sql语句是已被封装好,不好的是有些语句较为繁琐,会在一定程度上消耗一些性能。 mybatis能够根据自身需求优化SQL语句,排除不必要的字段查询,从而提高SQL的执行效率。 #### 对象管理 hibernate有完整的对象关系映射框架,开发中,无需过多的关注底层实现 mybatis需要自行管理器映射关系 #### 各优势 ##### hibernate优势 1. 开发简单,SQL维护成本低 2. 对象维护方面 3. hibernate比较大的优点,其数据库的移植性很好,从mysql移植到oracle方便,不同需要重写SQL语句,这是mybatis所不能的 4. hibernate有更好的缓存机制 ##### mybatis优势 1. SQL语句优化方便,能过自定义返回字段,减少冗余字段的查询 2. mybatis学习门槛低 #### 总结 我个人认为,在编程中如果更倾向于以对象为重心,我推荐使用hibernate。如果以数据库为开发重心,推荐使用mybatis。 并且如果在你的结构设计中并没有很高的吞吐量,Hibernate是一个不错的选择,对象模型为重心的Hibernate提供了相对方便的开发环境。但是如果你在处理一个非常复杂的逻辑数据库,并且编写非常复杂的SQL语句,mybatis是最佳人选。 还有一点需要注意的是,HQL(Hibernate Query Language)是一个不同于SQL语句的新语言,如果你使用Hibernate还需要花时间学习。还有的是有些时候,你还需要花费时间计算找出XML、属性、注释等的正确组合,以便Hibernate生成高性能SQL查询。 因此,选择持久层框架,是使用Mybatis还是Hibernate,都是是应自身需求而定,并没有什么哪个框架比哪个好。 打赏: 微信, 支付宝 标签: spring mvc, ssh, hibernate, mybatis 本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。