MyBatis

*本人刚刚学完 MyBatis ,于是想浅显的总结一下。如有错误,麻烦各位大佬们在评论区指出,谢谢。*

最开始认识 MyBatis这个单词,是在学习MySQL的时候看到的。那个时候完全不知道这个是什么,现在略知一二的我来说说:

MyBatis

MyBatis 就是一个框架,什么框架呢?是一个半自动化的ORM框架 (Object Relationship Mapping) -->对象关系映射。我们原来使用JDBC操作数据库 , 有很多重复代码块 。比如 : 数据取出时的封装 , 数据库的建立连接等等... , 通过框架可以减少重复代码,提高开发效率 。 MyBatis 干嘛用呢?MyBatis 就是帮助程序猿将数据存入数据库中 , 和从数据库中取数据 。其实所有的事情,不用 MyBatis 依旧可以做到,只是用了它,所有实现会更加简单!(在B站看过狂神的人,都应该觉得这段句话很熟悉吧。)

什么是 Mybatis?

  • MyBatis 是一款优秀的持久层框架

  • MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程

  • MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 实体类 【Plain Old Java Objects,普通的 Java对象】映射成数据库中的记录。

  • MyBatis 本是apache的一个开源项目ibatis, 2010年这个项目由apache 迁移到了google code,并且改名为MyBatis 。

既然都说到Mybatis框架了,那必要提一下Hibernate框架啦~

Hibernate和Mybatis的区别

MyBatis的缓存

为了提高性能,用户第一次读到的数据会存到缓存中,如果想第二次获取该数据,可以从缓存中直接获取,就不需要再次跑去数据库中查询这条数据。 MyBatis提供查询缓存,用于减轻数据库压力,提高性能。MyBatis提供了一级缓存和二级缓存。

想要更好的了解什么是MyBatis的一级缓存和二级缓存可以去看看 这位大佬这位大佬

一级缓存是 SqlSession 级别的缓存。在操作数据库时需要构造 SqlSession 对象,在对象中有一个数据结构(HashMap)用于存储缓存数据。不同的是 SqlSession 之间的缓存数据区(HashMap)是互相不影响。

二级缓存是 Mapper 级别的缓存,多个 SqlSession 去操作同一个 Mapper 的 sql 语句,多个 SqlSession 可以共用二级缓存,二级缓存是跨 SqlSession 的。

我浅显的理解就是,一级缓存是默认缓存数据库的,而二级缓存是需要开启才能缓存一级缓存的。在没有开启二级缓存的时候,需要查询数据时,首先要经过一级缓存,如果一级缓存中没有这条数据,就进入到数据库中;如果开启了二级缓存,数据的查询就首先要进入二级缓存,再到一级缓存,最后是数据库。

都说到二级缓存了,那就说说Redis、EhCache 和Memcached。因为MyBatis自带的二级缓存太菜了,不太能满足现在的缓存需求,所以就出现了这三个“男高音”来方便我们的缓存技术。

Redis和Memcached都是非关系型数据库(NoSQL)中。

Memcached和Redis的区别

  • redis: 支持比较多的数据类型(String/list/set/sortset/hash),redis支持集合计算的(set类型支持),每个key最大数据存储量为1G,redis是新兴的内存缓存技术,对各方面支持不完善,支持持久化操作。

  • memcache:老牌的内存缓存技术,对相关领域支持比较丰富,window和linux都可以使用,各种框架(tp/yii等等)都支持使用,session的信息可以非常方便的保存到该memcache中,每个key保存的数据量最大为1M,支持的数据类型比较单一,就是String类型,不支持持久化。

两者的相同之处在于把数据保存在内存中。

Ehcache 和 Redis的区别

  • Ehcache(分布式缓存)直接在jvm虚拟机中缓存,速度快,效率高;但是缓存共享麻烦,集群分布式应用不方便。

  • Redis(集中式缓存也可以分布式缓存)是通过socket访问到缓存服务,效率比ecache低,比数据库要快很多,处理集群和分布式缓存方便,有成熟的方案。

如果是单个应用或者对缓存访问要求很高的应用,用ehcache。如果是大型系统,存在缓存共享、分布式部署、缓存内容很大的,建议用redis。

既然有了Redis,那就随便说说MySQL吧。

MySQL是关系型数据库,主要用于存放持久化数据,将数据存储在硬盘中,读取速度较慢。

Redis是NOSQL,即非关系型数据库,也是缓存数据库,即将数据存储在缓存中,缓存的读取速度快,能够大大的提高运行效率,但是保存时间有限。

正是因为它们的优势不同,所以一般在搭建一个项目的时候,MyBatis是和MySQL搭配一起使用的,根据项目的大小和内容来决定是否要加入第三方jar(Redis、Ehcache和Memcache)来优化性能。

*以上只是我对MyBatis粗略的认识,如果有不对的方法,麻烦各位大佬在评论区指出,谢谢~*

*想转载的,请私信我,经本人同意后,方可转载!*

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值