spring源码分析-SpringJdbc设计原理

1.简介 Spring Jdbc也遵循了简单开发的原则,使用了模板模式,替我们完成所有使用JDBC API进行开发的单调乏味的、底层细节处理工作,而我们只需要补充一些spring没做的事就可以了,下表描述了哪些是spring帮助我们做好的,哪些是我们要做的。
《spring源码分析-SpringJdbc设计原理》

2.有哪些模板呢? JdbcTemplate:Spring里最基本的JDBC模板,利用JDBC和简单的索引参数查询提供对数据库的简单访问。 NamedParameterJdbcTemplate:能够在执行查询时把值绑定到SQL里的命名参数,而不是使用索引参数。 SimpleJdbcTemplate:利用Java 5 的特性,比如自动装箱、通用(generic)和可变参数类表来简化JDBC模板的使用。

3.基于spring jdbc进行二次开发

Hibernate优点 1、API丰富,可以实现无SQL操作(HQL),为了兼容所有数据库(都会先解释为HQL) 再由HQL翻译成SQL(当然,有支持直接执行SQL的API,为了考虑用户需求复杂性) 对所有数据库方言都支持得非常不错 2、ORM全自动化

MyBatis优点 1、轻量级,性能好 2、SQL和Java代码分离(SqlMap,把每一条SQL语句起一名字,作为Map的key保存) get(“selectByName”)

缺点 Hibernate过于复杂,什么临时态、持久态、删除态、游离态,OneToOne OneToMany ManyToMany MyBatis对于sql语句的编写工作量较大

简化,spring推出的jdbc在于简化,使用JdbcTemplate自己写去

因此我们集合了两者的优点进行spring jdbc的二次开发

第一,性能要好,是啥就是啥,不经过二次处理(不对SQL语句进行二次包装) 第二,单表操作实现NoSQL(只要用JDBC,SQL是不能省,只不过这拼接SQL的过程不要用户自己写了 由程序自动生成,最终生成的是一个字符串) 第三,ORM零配置实现自动化(利用反射机制,把字段和属性对应上,然后,自动实例化返回结果)

原则:约定优于配置(保证代码健壮性)
DAO原则:一个Dao只操作一张表
约定:做修改和删除的是根据主键来操作的
约定:尽量使用单表操作,如果实在要多表操作,可以先把数据查出来放到内存,然后在内存中进行计算
约定:支持读写分离
约定:支持分库分表
约定:ORM支持的类型原则上只认Java八大基本数据类型 + String(为了降低复杂度)

源码:
https://blog.csdn.net/charjay_lin/article/details/80948427

二次开发框架流程 1、知道QuertRUle规范,定义了跟多查询规则的常量,定义了查询规则保存方法 2、提供一个抽象Dao类给用户去实现,基于单表操作 3、把实体的配置信息解析成一个EntityOpertion对象,同时实现了ORM的自动过程 4、在抽象的Dao调用查询方法,把QueryRule作为参数传入,提供一个QueryRule搞定所有操作(对用户来说只要知道一个类,就会用这个框架了) 5、再将传入的QueryRule交给QueryRuleSqlBuilder构建出一个sql语句(被拆分了SQL) 6、拼接CRUD SQL语句 7、交给JdbcTemplate执行 8、调用EntityOpertion的ORM过程 9、返回结果,对于用户来说都是单表操作,而且规定了泛型,所以不需要做任何强制类型转换

4.不依赖spring的orm框架 那么orm的实现原理是什么呢,我们可以看源码 大四的时候写的,比较粗糙的一个版本:
https://gitee.com/charjay/simpleorm.git

    原文作者:Spring MVC
    原文地址: https://blog.csdn.net/CharJay_Lin/article/details/81014022
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞