初入Mybatis(一):Mybatis和Hibernate的区别
mybatis解决JDBC问题:
1.使用jdbc每一次调用数据库就会创建,销毁连接,消耗内存,执行效率低
解决方法:SqlMapConfig.xml中配置连接池
2.sql语句写入在java项目代码中,修改sql导致java代码改动,不利于维护
解决方法:将sql语句写在mapper.xml中,是sql和java代码分离
3.使用?占位符时,参数过多过少,需要一一对应参数。不利于维护
解决方法:通过Mybatis自动映射java对象至sql语句,通过statement的parameterType进行传参
4.查询时存在硬编码,当sql语句改变解析的sql语句也发生变化,系统不利于维护。
解决方法:通过Mybatis自动映射sql语句至java对象,通过statement的resultType返回数据
Mybats和Hibernate的区别:
Mybatis:
- 编写SqlMapConfig.xml文件:编辑连接数据库的信息
- 加载配置文件,获取SqlSessionFactory对象
- 获取SqlSession对象:调用Mapper.xml的sql语句
(insert,update,delete,selectOne,selectLists) - 释放资源
优点:
1.Mybatis是一个半自动的ORM持久层框架,需要手动编写sql语句和ResultMap,灵活性强,适合移动互联网高并发,大数据,高性能,高响应的要求。
2.使用起来相对于比较简单。
缺点:
1.因为使用的是SQL进行数据库的操作,所以与数据库的无关性差,操作不同的数据库需要编写不同的sql语句,拓展性差。
2.没有日子系统,需要借助log4j来记录日志。
3.Mybatis的接口需要接口和Sql
4.使用二级缓存操作不当时,出现脏读程序仍会正常运性,存在安全隐患。
2.Hibernate:
编程步骤:
- 加载Hibernate.cfg.xml文件:获取连接数据库的信息
- 获取SessionFactory对象(内含Session和二级缓存)
- 获取Session(Connection和一级缓存):操作数据库的CRUD
- 释放资源
优点:
1.Hibernat是一个全自动的ORM框架,无需关心sql,更加专注于流程。无需编写sql语句,开发效率高,与数据库的无关系好,能操作不同的数据库,适用于高关系模型要求高的软件(例如需求固定的定制化软件)。
2.拥有自己的日志统计
3.Hibernate无需噢诶之接口和sql
4.Hibernate对查询对象有着良好的管理机制,二级缓存出现脏读会记性报错
缺点:
1.使用难度高,开发时需要考虑模块,性能,对象关系映射之间的权衡
2.当Sql出现三个关联时,会造成太多性能的丢失。