为什么MyBatis是Java数据库持久层的明智选择

在Java应用程序的开发中,选择合适的数据库持久层框架至关重要。一个明智的选择可以帮助开发人员更好地管理数据库交互、提高性能和简化开发工作。

(一)为什么要选MyBatis

JDBC Hibernate / JPA MyBatis
简单直接 ORM 轻量+动态SQL+关联查询
开发效率低 屏蔽底层数据库差异 国内生态
重复冗余 关联查询、动态SQL不友好 不能屏蔽数据库差异

在以前是直接用JDBC进行数据库查询,优点是简单直接,缺点是开发效率低。用JDBC写程序,需要大量手工写代码,

代码重复率较高,后来逐渐演化出ORM框架。

ORM框架最早期有Hibernate以及JPA规范,Hibernate能够屏蔽底层数据库差异,自动根据SQL语言生成对应底层不

同数据库的方言,缺点是对关联查询支持与动态SQL能力不太友好,很难写出高效SQL。

国内目前流行的是轻量级MyBatis,对动态SQL以及关联查询的支持性较高,缺点是因为它绑定一个DB,手写SQL还要

动态拼接,很难从一个DB自由的切换到另外一个DB,但由于平时很少切换DB,因此问题不是很大。

(二)MyBatis基本概念介绍

MyBatis主要分为三层:接口层,核心层与基础层。

1.接口层

是通过提供的API作为数据库进行增/删/改/查,都是MyBatis的API。

2.核心层

是SQL预处理、SQL执行、结果映射。

1)SQL预处理:是对代码里的变量进行绑定,以及动态SQL生成;

2)SQL执行:是把生成好的SQL,通过JDBC驱动,传到对应的DB里执行,而且要负责网络通信的部分;

3)结果映射:是把数据库返回的结果从关系型数据转换成Java对象数据。

3.基础层

包括日志、事务管理、缓存、连接池、动态代理、配置解析。

1)日志:是做框架里面的日志输出以及SQL语句输出;

2)事务管理:是对 JDBC事物、数据库事物做管理;

3)缓存:能够把结果集缓存在JVM的内存内部。优点是比较快,缺点是会占用堆内存。有条件的情况下,建议用户多

使用分布式缓存;

4)连接池:能够加速查询,提高性能;

5)动态代理:在用MyBatis编程时,核心是通过接口执行数据库查询。而Mapper接口本身是没有实现的,通过注解

或者XML配置SQL语句,动态代理会在运行时生成代理,当调用Mapper接口时,转换成实际的SQL语句;

或者XML配置SQL语句,动态代理会在运行时生成代理,当调用Mapper接口时,转换成实际的SQL语句;

6)配置解析:因为MyBatis里面有存在大量配置,需要配置新模块,读取XML配置,并把它映射为配置属性。

参考:https://developer.aliyun.com/ebook/450?spm=a2c6h.20345107.ebook-index.28.6eb21f54J7SUYc

相关推荐
ClouGence7 小时前
CloudCanal + Paimon + SelectDB 从 0 到 1 构建实时湖仓
数据库
渣哥7 小时前
原来 Java 里线程安全集合有这么多种
java
间彧7 小时前
Spring Boot集成Spring Security完整指南
java
间彧8 小时前
Spring Secutiy基本原理及工作流程
java
Java水解9 小时前
JAVA经典面试题附答案(持续更新版)
java·后端·面试
洛小豆11 小时前
在Java中,Integer.parseInt和Integer.valueOf有什么区别
java·后端·面试
前端小张同学11 小时前
服务器上如何搭建jenkins 服务CI/CD😎😎
java·后端
ytadpole11 小时前
Spring Cloud Gateway:一次不规范 URL 引发的路由转发404问题排查
java·后端
华仔啊12 小时前
基于 RuoYi-Vue 轻松实现单用户登录功能,亲测有效
java·vue.js·后端