*本人刚刚学完 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框架啦~
MyBatis的缓存
为了提高性能,用户第一次读到的数据会存到缓存中,如果想第二次获取该数据,可以从缓存中直接获取,就不需要再次跑去数据库中查询这条数据。 MyBatis提供查询缓存,用于减轻数据库压力,提高性能。MyBatis提供了一级缓存和二级缓存。
想要更好的了解什么是MyBatis的一级缓存和二级缓存可以去看看 这位大佬和这位大佬,我浅显的理解就是,一级缓存是默认缓存数据库的,而二级缓存是需要开启才能缓存一级缓存的。在没有开启二级缓存的时候,需要查询数据时,首先要经过一级缓存,如果一级缓存中没有这条数据,就进入到数据库中;如果开启了二级缓存,数据的查询就首先要进入二级缓存,再到一级缓存,最后是数据库。
都说到二级缓存了,那就说说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粗略的认识,如果有不对的方法,麻烦各位大佬在评论区指出,谢谢~*
*想转载的,请私信我,经本人同意后,方可转载!*
标签:缓存,数据库,Redis,二级缓存,MyBatis,数据 From: https://www.cnblogs.com/duhengerhou/p/16748726.html