为什么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

相关推荐
新手小袁_J11 分钟前
JDK11下载安装和配置超详细过程
java·spring cloud·jdk·maven·mybatis·jdk11
呆呆小雅12 分钟前
C#关键字volatile
java·redis·c#
Monly2113 分钟前
Java(若依):修改Tomcat的版本
java·开发语言·tomcat
阳冬园15 分钟前
mysql数据库 主从同步
数据库·主从同步
Ttang2315 分钟前
Tomcat原理(6)——tomcat完整实现
java·tomcat
钱多多_qdd26 分钟前
spring cache源码解析(四)——从@EnableCaching开始来阅读源码
java·spring boot·spring
waicsdn_haha28 分钟前
Java/JDK下载、安装及环境配置超详细教程【Windows10、macOS和Linux图文详解】
java·运维·服务器·开发语言·windows·后端·jdk
Q_192849990638 分钟前
基于Spring Boot的摄影器材租赁回收系统
java·spring boot·后端
Code_流苏40 分钟前
VSCode搭建Java开发环境 2024保姆级安装教程(Java环境搭建+VSCode安装+运行测试+背景图设置)
java·ide·vscode·搭建·java开发环境
Mr.131 小时前
数据库的三范式是什么?
数据库