一、前言 1.持久层
Java数据持久层,其本身是为了实现与数据源进行数据交互的存在,其目的是通过分层架构风格,进行应用&数据的解耦。
我从整体角度,依次阐述JDBC、Mybatis、MybatisPlus。
前者总是后者的依赖。只有在了解前者,才可以更好地学习后者。
ciwai ,还有Hibernate、SpringData、JPA等。
至于Hibernate作为知名框架,其最大的特点,是支持面向对象的数据管理。但成也萧何,败也萧何。Hibernate的该功能,导致其太重了。而大多数场景下,我们是不需要这个功能的。另外,Hibernate的该功能,使用起来过于复杂。其设计关联关系&映射关系,带来了太多复杂度。
SpringData,则是我看好的另一个Spring原生支持。但是目前主流还是Mybatis,其发展&主流的切换,还需要时间。就让子弹飞一会儿吧。
至于MybatisPlus,是我在工业物联网公司时所采用的一个技术方案。其符合“约定大于配置”的技术趋势,减少了Mybatis那样的配置成本,但是比JPA更加灵活。更棒的是,它支持stream这样的编码方式进行Sql支持(错误可以在编译期透出)。但如果是大型公司,个人的建议是,谨慎考虑,再进行使用。抛开技术方面的考量,MybatisPlus虽然是优秀的开源软件,但其开源社区&软件管理确实相对过于薄弱。对于大公司的技术生态而言,这是一个不得不重视的风险点。
不过,Mybatis作为现在最流行的ORM框架,还是值得大家相信的。所以经过考虑,这边文章虽然包含三块内容,但是JDBC更多作为一个依赖,进行了解。而MybatisPlus主要侧重于其核心功能-BaseMapper的实现,以及其扩展Mybatis得到的扩展实现方式。整篇文章的重点,还是落在Mybatis,对其投入较大的精力进行描述。
4.文章优势又到了王婆卖瓜的阶段。
文章最大的两个优点:图&结构。
本篇文章采用了数十张图,用于展现对应关系。毕竟一图胜千言嘛。
而结构方面,文章采用MECE原则。文章分为JDBC、Mybatis、MybatisPlus。核心的Mybatis分为静态结构&运行流程。静态结构对Mybatis的架构,以及模块进行了展开。运行流程则是针对Mybatis的初始化&运行两个重要生命周期节点,进行展开。最后,通过Mybatis的核心Configuration的核心字段解析(作用、来源、去向)进行总结收纳。
遗憾主要集中在两个方面:
由于是一个长文(接近6W字),最近事情又多(财年底,大家懂的),所以难免有一些疏漏。欢迎大家指出来哈。
战线拖得太长(写了快两个月)。虽然还有很多地方可以展开&深入,但是经过考虑后,还是放弃了。
文章中有很多补充部分,大家可以自行查阅,扩展知识面。虽然我查询了一些资料,但是有点整理不动(又不知大家是否感兴趣)。当然,如果大家对某部分感兴趣,可以提出来,我出个单章。
二、JDBC 1.简介JDBC是一个规范,其分为两个部分:
厂商:完成数据库驱动
Java开发者:调用统一接口
2.整体结构对应组件:
DriverManager:数据库驱动管理器
Driver:数据库驱动的抽象接口,用于与数据库服务进行通信
Connection:与数据库的连接
Statement:用于提交SQL语句
Statement:通用接口,继承自Wrapper。普通的不带参的查询SQL;支持批量更新,批量删除;
PreparedStatement:预编译接口,继承自Statement。可变参数的SQL,编译一次,执行多次,效率高; 安全性好,有效防止Sql注入等问题;
CallableStatement:继承自PreparedStatement。支持调用存储过程,提供了对输出和输入/输出参数(INOUT)的支持;
ResultSet:用于保存数据库结果
SQLException:数据库异常
3.生命周期 a.初始化过程驱动注册&配置注入
b.执行过程 4.代码示例原生JDBC较为原始,架构上的设计也是非常薄的。
所以,说得太多,还不如看看应用代码。