mybatis缓存和hibernate缓存的理解问题和区别。类缓存和查询缓存的理解和区别

问题描述

mybatis缓存和hibernate缓存的理解问题和区别。类缓存和查询缓存的理解和区别

Hibernate的一级缓存的目的是为了方便管理实体类的状态(临时状态、持久化状态、游离状态、删除状态)。Hibernate的目的二级缓存是为了减少sql语句。那么mybatis的一级缓存和二级缓存的目的是为了什么?

Hibernate的二级缓存通常使用ehcache,通常配置的是实体类,所以ehcache里面配置实体类是属于类缓存吗?
类缓存到底在什么地方优化?怎样减少sql语句?
查询缓存到底什么地方优化?怎么减少sql语句?
类缓存和查询缓存的区别是什么

解决方案

mybatis的一二级缓存从理解上和hibernate是一样的。
类缓存意思是代理映射。把一个类在内存中映射 ,放在寄存器中,那么访问寄存器快还是硬盘快 ?
查询缓存意思差不多可以理解为一二级缓存。

现在使用的hibernate的少了 ,相对mybatis来说比较沉重 ~ mybatis还是比较灵活的!

时间: 2025-01-24 06:52:16

mybatis缓存和hibernate缓存的理解问题和区别。类缓存和查询缓存的理解和区别的相关文章

ehcache查询缓存,还会发出查询语句

问题描述 我在项目中加入了ehcache查询缓存,配置都正确,代码中也加入了query.setCacheable(true);在第一次查询时,观察控制台会发出一遍查询语句:Hibernate:selectrole0_.idasid1_2_,role0_.descriptionasdescript2_2_,role0_.rolenameasrolename3_2_fromhz_rolerole0_按理说配置了查询缓存,再次查询的时候不会发出查询语句的,但是我这里却又发送了查询语句,而且是两句话:H

MySQL 4.1.0 中文参考手册 --- 6.9 MySQL 查询缓存

mysql|参考|参考手册|缓存|中文 MySQL 4.1.0 中文参考手册 --- 犬犬(心帆)翻译 MySQL Reference Manual for version 4.1.0-alpha. 6.9 MySQL 查询缓存 从 MySQL 4.0.1 开始,MySQL server 有一个重要的特征:Query Cache. 当在使用中,查询缓存会存储一个 SELECT 查询的文本与被传送到客户端的相应结果.如果之后接收到一个同样的查询,服务器将从查询缓存中检索结果,而不是再次分析和执行这

MySQL查询缓存 --《高性能MySQL》读书笔记

        Query Cache(QC)         缓存完整的Select结果,当查询命中该缓存,MySQL会立刻返回结果,跳过解析.优化和执行阶段. 1.如何判断缓存命中         缓存存放在一个引用表中,通过哈希值引用.哈希值包括查询本身.待查数据库.客户端协议版本等可能影响返回结果的信息. 注: 当表被lock tables锁住时,仍可以通过查询缓存返回数据. 任何字符不同(包括空格.注释)都会导致缓存的不命中. 不会被缓存:①查询语句包含不确定数据(如函数now().c

MySQL 查询缓存 query_cache_size

MySQL 查询缓存 query_cache_size 从 MySQL 4.0.1 开始,MySQL server 有一个重要的特征:Query Cache. 当在使用中,查询缓存会存储一个 SELECT 查询的文本与被传送到客户端的相应结果.如果之后接收到一个同样的查询,服务器将从查询缓存中检索结果,而不是再次分析和执行这个同样的查询. 注意:查询缓存绝不返回过期数据.当数据被修改后,在查询缓存中的任何相关词条均被转储清除. 在某些表并不经常更改,而你又对它执行大量的相同查询时,查询缓存将是非

MySQL的查询缓存机制基本学习教程_Mysql

MySQL缓存机制简单的说就是缓存sql文本及查询结果,如果运行相同的sql,服务器直接从缓存中取到结果,而不需要再去解析和执行sql.如果表更改 了,那么使用这个表的所有缓冲查询将不再有效,查询缓存值的相关条目被清空.更改指的是表中任何数据或是结构的改变,包括INSERT.UPDATE. DELETE.TRUNCATE.ALTER TABLE.DROP TABLE或DROP DATABASE等,也包括那些映射到改变了的表的使用MERGE表的查询.显然,这对于频繁更新的表,查询缓存是不适合的,而

Mysql查询缓存研究

  专家简介    李季鹏 [DBA+社群•开源数据库用户组]联合发起人 5年+MySQL经验,主导运营商去IOE技术落地,精通MySQL数据库及相关解决方案,对MySQL集群架构,高可用方案有深入的研究.       MySQL的查询缓存并非缓存执行计划,而是查询及其结果集,这就意味着只有相同的查询操作才能命中缓存,因此MySQL的查询缓存命中率很低,另一方面,对于大结果集的查询,其查询结果可以从cache中直接读取,有效的提升了查询效率.       1 工作流程和相关参数及命令 1.1 工

mysql 开启查询缓存方法与查询例子

开启缓存,设置缓存大小,具体实施如下: 1.修改配置文件,windows下是my.ini,linux下是my.cnf; 在配置文件的最后追加上:  代码如下 复制代码 query_cache_type = 1 query_cache_size = 600000 需要重启mysql生效: 那么采用第二种方式: b) 开启缓存,两种方式: a)使用mysql命令:  代码如下 复制代码 set global query_cache_type = 1;  set global query_cache_

mysql 设置查询缓存_Mysql

可将如下语句 query_cache_size = 268435456 query_cache_type = 1 query_cache_limit = 1048576 存放到/etc/my.cnf文件的[mysqld]下 然后重启mysql数据库 service mysqld restart 就会启动mysql的缓存机制Query Cache. 在使用中,查询缓存会存储一个 SELECT 查询的文本与被传送到客户端的相应结果. 如果之后接收到一个同样的查询,服务器将从查询缓存中检索结果,而不是

【HIBERNATE框架开发之九】HIBERNATE 性能优化笔记!(遍历、一级/二级/查询/缓存、乐观悲观锁等优化算法)

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/hibernate/825.html 1.   循环分页或者循环进行部分读取处理数据的时候,使用 session.clear() ;   2.    对应1+N(N+1)问题使用如下解决方式: 1): 使用createCriteria进行查询(join fetch) 2):HQL -> join fetch 3): 使用@fetch设置LAZ