当前位置: 首页 > news >正文

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

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

(一)为什么要选MyBatis

JDBCHibernate / JPAMyBatis
简单直接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

http://www.lryc.cn/news/189815.html

相关文章:

  • 二叉搜索树--查询节点-力扣 700 题
  • YOLOv3 | 核心主干网络,特征图解码,多类损失函数详解
  • Java架构师API设计
  • .net也能写内存挂
  • python学习笔记2-数字转化为String
  • MAC版Gradle构建Spring5.X源码阅读环境
  • Linux 常用通配符
  • Python皮卡丘
  • 【数据结构与算法】三种简单排序算法,包括冒泡排序、选择排序、插入排序算法
  • 视频太大怎么压缩变小?超过1G的视频这样压缩
  • Edge 无法登录/同步问题【一招搞定】
  • ESP32-S3上手开发
  • UE4和C++ 开发-编程基础记录(UE4+代码基础知识)
  • 【Unity】【VR】如何让Distance Grab抓取物品时限制物品的Rotation
  • 为什么3ds max渲染效果图有噪点?点进来,CG Magic告诉您!
  • Element UI怎么安装呢?
  • redis批量删除命令
  • kubernetes环境 搭建
  • TCP习题总结
  • 华为发布LampSite X室内数字化创新解决方案,释放数字世界无限潜能
  • 麒麟操作系统设置QT程序开机自启动有效方法
  • Python数组删除元素pop与remove对比
  • 【Java 进阶篇】Java Web 编写注册页面案例
  • 7.5 SpringBoot 拦截器Interceptor实战 统一角色权限校验
  • 【原创】ubuntu18修改IP地址
  • Vue-2.4sync修饰符
  • 【RealTek sdk-3.4.14b】RTL8197FH-VG+RTL8367+RTL8812F WiFi to LAN 和WiFi to WAN吞吐量
  • vue 本地上传Excel文件并读取内容
  • 京东商品品牌数据采集接口,京东商品详情数据接口,京东API接口
  • 电脑提示Explorer.exe系统错误该怎么办?