伴随着电商的火爆,Mybatis逐渐走入大家的视线,同时hibernate的使用量逐步被替代,为什么会出现这种情况?Mybatis本质上到底解决什么问题,刨开本质,步步深入吧!
1、传统的JDBC编程
Java程序是通过JDBC连接数据库的,因此通过SQL对数据库编程。JDBC由SUN公司提出一系列规范,只定义了规范,具体的需要各个数据库厂商去实现,每个数据库是有自己的特殊性,所以JDBC是典型的桥接模式
使用JDBC编程需要以下步骤
1.1使用JDBC编程需要连接数据库,注册驱动和数据库信息
1.2操作Connection,打开Statement对象
1.3通过Statement执行SQL,返回结果到ResultSet对象
1.4使用ResultSet读取数据,通过代码转换为POJO对象
1.5关闭数据库相关资源
使用JDBC的可以解决问题,但是相对来说很复杂,操作底层大量对象,并且需要准确关闭。如果其中错误,需要进行异常捕捉处理并正确关闭资源。
2、 ORM
介于上面的问题,采用ORM来替代JDBC,本质上ORM是对JDBC的封装。ORM关系映射对象,把数据表和POJO对象结合映射,从而使得对数据库的操作更加面向对象。
2.1hibernate
建立若干个POJO通过xml或者注解提供的规则映射到数据库表上,而且hibernate是全表映射模型。
2.1.1、配置xml文件hibernate.cfg.xml用于数据库连接信息配置
2.1.2、创建全局对象hibernateFactory,生产session接口
2.1.3、直接在java文件使用session对象直接操作即可
优点:
消除代码的映射规则,分离到了xml或注解中;无需配置数据库连接;只需要操作一个session对象,并且只需关闭一个session对象。
缺点:
全表映射不灵活,无法根据不同条件组装sql,对多表联查执行性较差,不能有有效的支持存储过程,而且HQL的性能较差,无法对SQL优化
2.2Mybatis
面对hibernate的不足之处,半自动映射的框架Mybatis出现,提供手工匹配POJO,SQL和映射关系
在使用Mybatis的过程需要自己编写SQL,配置比hibernate多,但是可以动态配置SQL,解决hibernate中数据库中随时间变化,不同条件的列名可以不一样的问题,同时可以优化SQL,而且配置可以决定映射规则,存储过程等。对于辅助的复杂和需要优化性能SQL查询使用Mybatis更方便。
Mybatis整体上配置较多,但是使用起来灵活性比较高,尤其是针对业务服务复杂,性能要求较高的系统,Mybatis确实不错的选择!
总结
到目前为止,一共接触了三种数据库连接操作的操作方式
1、传统的jdbc
2、自动映射框架hibernate
3、半自动映射框架Mybatis
传统的jdbc在连接操作上相对来说很麻烦
hibernate相对于复杂的数据库操作,很不灵活,但是整体开发工作量最少。hibernate适用于场景不复杂,要求性能不苛刻的时候使用,
mybatis半自动化,操作上灵活可变,但是配置相对复杂。相对hibernate开发工作量稍多,但是mybatis能是的sql优化发挥一定的作用,所以mybatis框架的技术也是很火爆的。