一、持久层
将业务数据存储到磁盘,也具备长期存储能力,只要磁盘不损坏,如果在断电情况下,重启系统仍然可以读取数据;持久是相对于瞬时来说的,其实就是可以把数据固化在硬盘或者磁带一类可以保存很长时间的设备上,不像放在内存中一样断电就消失了。
二、JDBC
1、什么是JDBC
JDBC(JavaDataBase Connectivity)就是 Java 数据库连接, 说的直白点就是使用 Java 语言操作数据库,本来我们是通过控制台或客户端操作的数据库, JDBC 是用 Java 语言来发送 SQL 语句,从而进行的对数据库的操作。
JDBC本质上也是一种发送SQL操作数据库的连接技术,只不过需要通过Java编码完成。
通过JDBC技术与数据库进行交互,使用Java语言发送SQL语句到数据库中,可以实现对数据的增、删、改、查等功能,可以更高效、安全的管理数据。
JDBC是数据库与Java代码的桥梁(链接)。
2、JDBC原理
因为各个厂商所提供的 数据库差异实在太大, 所以 SUN 公司与数据库厂商讨论出的就是:由 SUN 公司提供出一套访问数据库的规范 API, 并提供相对应的连接数据库协议标准, 然后各厂商根据规范提供一套访问自家数据库的 API 接口,最终:SUN 公司提供的规范 API 称之为 JDBC, 各厂商提供的自家数据库 API 接口称之为驱动。
此前我们学习过SQL后,可以通过 Navicat、SQLyog等图形化客户端发送SQL操作数据库。本质上,JDBC的作用和图形化客户端的作用相同,都是发送SQL操作数据库。差别在图形化界面的操作是图形化、傻瓜化的,而JDBC则需要通过编码完成图形操作时的效果。

3、JDBC技术相关接口
接口 | 作用 |
Driver | 驱动接口,定义建立链接的方式 |
DriverManager | 工具类,用于管理驱动,可以获取数据库的链接 |
Connection | 表示Java与数据库建立的连接对象(接口) |
PreparedStatement | 发送SQL语句的工具 |
ResultSet | 结果集,用于获取查询语句的结果 |
JDBC是规范(接口)不是实现(类)
4、JDBC的操作步骤

加载驱动
获取链接
准备SQL以及发送SQL的工具
执行SQL
处理结果集
释放资源
三、Mybatis
1、什么是Mybatis
Mybatis是一款半自动的ORM持久层框架,具有较高的SQL灵活性,支持高级映射(一对一,一对多),动态SQL,延迟加载和缓存等特性,但它的数据库无关性较低。
2、什么是ORM框架
Object Relation Mapping(ORM)对象关系映射。对象指的是Java对象,关系指的是数据库中的关系模型,对象关系映射,指的就是在Java对象和数据库的关系模型之间建立一种对应关系,比如用一个Java的Student类,去对应数据库中的一张student表,类中的属性和表中的列一一对应。Student类就对应student表,一个Student对象就对应student表中的一行数据。
3、Mybatis的优点
是一个基于Java的持久层框架 。
提供的持久层框架包括SQL Maps和Data Access Objects(DAO)。
支持普通 SQL查询,存储过程和高级映射的优秀持久层框架 。
消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索 。
使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录 。
4、Mybatis的整体流程
加载配置并初始化
接收调用请求
处理操作请求
返回处理结果将最终的处理结果返回
5、Mybatis的功能架构
API接口层:提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。
数据处理层:负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理等。它主要的目的是根 据调用的请求完成一次数据库操作。
基础支撑层:负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓存处理,这些都是共用的东西,将他们抽取出来作为最基础的组件。为上层的数据处理层提供最基础的支撑。
6、Mybatis框架的优缺点
(1)优点:
与JDBC相比,减少了50%以上的代码量。
MyBatis是最简单的持久化框架,小巧并且简单易学。
MyBatis相当灵活,不会对应用程序或者数据库的现有设计强加任何影响,SQL写在XML里,从程序代码中彻底分离,降低耦合度,便于统一管理和优化,并可重用。
提供XML标签,支持编写动态SQL语句。
提供映射标签,支持对象与数据库的ORM字段关系映射。
(2)缺点:
SQL语句的编写工作量较大,尤其是字段多、关联表多时,更是如此,对开发人员编写SQL语句的功底有一定要求。
SQL语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。