使用HazelCast进行休眠缓存:JPA缓存基础知识

HazelCast的最大功能之一就是对hibernate二级缓存的支持 。

JPA具有两个级别的缓存。
一级缓存在事务期间缓存对象的状态。 通过查询相同的对象两次,您必须获得第一次获取的对象。
但是,在包含您检索到的对象并访问数据库的复杂查询的情况下,结果可能会不同步,因为结果不会反映您在事务处理期间应用于内存中对象的更改。 但是,您可以使用flush()解决此问题。 启动JPA会话后,其第一级缓存将限制为该会话,它将不会影响其他会话。 一级缓存是JPA的一部分

与第一级缓存相反,第二级缓存与会话工厂关联,因此第二级缓存在会话之间共享。 常用数据可以存储在内存中并可以更快地检索。

启用第二级缓存后,休眠将在休眠区域中缓存检索到的实体。 为此,您必须将实体设置为可缓存。 在幕后,驻留在实体中的信息以脱水格式缓存。

Hazelcast可以在两种形式的体系结构中与二级缓存一起使用。
客户端服务器或仅群集的体系结构。
首先,我们将研究仅集群体系结构。 Hazelcast为每个Hibernate缓存区域创建一个单独的分布式映射,因此是一个实体。 您可以通过Hazelcast映射配置轻松配置这些区域。该区域的名称具有相应的hazelcast映射。 例如,我们的实体之一称为用户,完整的包路径为“ com.gkatzioura.User”,那么我们的榛树广播将名为“ com.gkatzioura.User”。 假设此地图分布在所有hazelcast节点上,则从一个节点检索到实体后,缓存的信息将与其他hazelcast节点共享。 一旦实体在节点中更新,则缓存的信息将在其他节点中失效。

Hibernate还为我们提供了查询缓存。 查询缓存是缓存查询结果的缓存。 例如,在jpql查询的情况下

SELECT usr.username,usr.firstname FROM User usr

缓存的结果将是一个具有由查询和参数组成的键的映射

以及检索结果的值。 在先前的缓存中,检索到的数据是原始值,它们按原样存储。
但是,在某些情况下查询可能会检索实体。
例如

SELECT c FROM Customer c

在这种情况下,不是存储所有检索到的信息,而是检索实体并将其缓存在第二级缓存中,而查询缓存具有使用查询及其参数作为键并将实体id作为值的条目。
一旦再次发出相同的查询,查询缓存将获取ID,并将在第二级缓存中查找对应的实体。 如果第二级缓存中不存在实体,则发出查询以获取丢失的实体。
当涉及二级缓存和查询缓存的配置时,我们需要注意二级缓存和查询缓存的逐出机制。 在将ID高速缓存在查询高速缓存中的情况下,您可能会感到迷惑,但是从第二级高速缓存中逐出了它们对应的实体。 在这种情况下,性能会受到影响,因为休眠将为每个丢失的实体发出查询。

Hazelcast支持二级缓存,但是它是节点本地的,并且从未在Hazelcast群集中分布。
尽管从查询中获取的结果仍保留在特定节点上,但应从用作第二级缓存的分布式映射中检索从缓存的查询指定的实体。

到目前为止,这是我们需要的理论。 在下一个博客中,我们执行一些spring数据jpa代码和一些hazelcast配置。

翻译自: https://www.javacodegeeks.com/2017/02/hibernate-caching-hazelcast-jpa-caching-basics.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/350097.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mvcc原理_Mysql MVCC实现原理

本文中用到的概念解释数据读取特性不可重复读指一个事务范围内两个相同的查询却返回了不同数据这是由于查询时系统中其他事务修改的提交而引起的幻读在两个连续的查找之间一个并发的修改事务修改了查询的数据集,导致这两个查询返回了不同的结果这是由于查询时系统中…

java数组复制的方式和效率比较

java中,数组的复制有以下三种方式: 1. 调用System.arraycopy(Arrays.copyOfRange可以当作第四种,但是底层调用的是System.arraycopy,所以,认为是同一种,下面是Arrays.copyOfRange的方法实现&…

Java命令行界面(第18部分):JCLAP

Giles Winstanley的JCLAP ( Java命令行参数解析器 )是基于Java的命令行处理库的系列文章中介绍的第18个库。 这篇文章的示例基于需要Java 8的 JCLAP 1.4 。 JCLAP主页上指出:“ JCLAP帮助Java开发人员为其应用程序创建易于使用的命令行界面。…

数据拆分_数据拆分,偏方请拿好

小伙伴们好啊,今天老祝和大家分享一个比较特殊的数据拆分实例。先来看一组数据:这是一些从系统中导出的数据,一个序号后面连接一个姓名,但是现在都挤在了一个单元格里。咱们要把这些数据变成下面的效果:接下来&#xf…

sql文字转换全拼_取汉字全拼的SQL函数

/*根据汉字获取全拼1.生成所有读音临时表2.根据Chinese_PRC_CS_AS_KS_WS 排序获取读音*/CREATE function f_GetPinYin(str varchar(100))returns varchar(8000)asbegindeclare re varchar(8000)--生成临时表declare t table(chr nchar(1) collate Chinese_PRC_CS_AS_KS_WS,py n…

jaxb入门_JAXB教程–入门

jaxb入门注意:请查看我们的Java XML绑定JAXB教程– ULTIMATE指南 什么是JAXB? JAXB代表用于XML绑定的Java体系结构。它用于将XML转换为java对象,并将java对象转换为XML。JAXB定义了一个用于在XML文档中读写Java对象的API。与SAX和DOM不同&am…

P2863 [USACO06JAN]牛的舞会The Cow Prom

题目描述 The N (2 < N < 10,000) cows are so excited: its prom night! They are dressed in their finest gowns, complete with corsages and new shoes. They know that tonight they will each try to perform the Round Dance. Only cows can perform the Round D…

call需要多大带宽 video_LTE杂谈之IMS voice 和video call流程

pan >SIP Message Logged Bytes 1951Message ID IMS_SIP_INVITEResponse Code INFORMAL_RESPONSE (0)CM Call ID 2SIP Call ID 842064754_23544448882409:8804:8000:186e:9fb:f711:a6d6:ead会话标识&#xff0c;整个流程不变Sip Message INVITEtel:10086;phone-context…

取消堆集以提高延迟并减少AWS账单

大多数性能问题可以通过几种不同的方式解决。 多数人都容易理解和应用许多适用的解决方案。 一些解决方案&#xff0c;例如从JVM管理的堆中删除某些数据结构&#xff0c;则更为复杂。 因此&#xff0c;如果您不熟悉此概念&#xff0c;我建议您继续学习我们最近如何减少应用程序…

python 环境常用指令(updating...)

# 配置pip 源 mkdir -p ~/.pip && cat >> pip.conf <<EOF [global] timeout 60 index-url https://pypi.doubanio.com/simple EOF # pyenv 安装 所需依赖&#xff1a; yum install gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel…

shell 删除了hdfs 文件,在HDFS上删除超过10天的文件

Is there a way to delete files older than 10 days on HDFS?In Linux I would use:find /path/to/directory/ -type f -mtime 10 -name *.txt -execdir rm -- {} \;Is there a way to do this on HDFS? (Deletion to be done based on file creation date)解决方案Solution…

mysql使用方法_Mysql的常用用法

一、mysql中limit的用法详解[数据分页常用]在我们使用查询语句的时候&#xff0c;经常要返回前几条或者中间某几行数据&#xff0c;这个时候怎么办呢&#xff1f;不用担心&#xff0c;mysql已经为我们提供了这样一个功能。SELECT * FROM table LIMIT [offset,] rows | rows OF…

MTK 移植泰文输入法

1.移植zi输入法 1.1 在文件..\make\XXX_GPRS.mak中 讲输入方式改为MMI_ZI XXX_LANGUAGE EN_SM_THAI INPUT_METHOD MMI_XI 1.2在MMI_feature.h 打开相应的ZI语言输入法的宏开关&#xff0c; #if defined(CFG_MMI_LANG_THAI) && ((CFG_MMI_LANG_THAI __ON__)||(CFG_MM…

java中无法推断类型参数_Java中的推断异常

java中无法推断类型参数借用和窃取其他语言的概念和想法总是很高兴的。 Scala的Option是我真正喜欢的一个主意&#xff0c;因此我用Java编写了一个实现。 它包装了一个可能为null或不为null的对象&#xff0c;并提供了一些可用于某种分类功能的方法。 例如&#xff0c;isDefine…

H3C 三种生成树协议特性的比较

转载于:https://www.cnblogs.com/fanweisheng/p/11153361.html

使用HazelCast进行休眠缓存:基本配置

以前&#xff0c;我们对JPA缓存&#xff0c;机制以及hibernate提供的内容进行了介绍 。 接下来是一个使用Hazelcast作为二级缓存的休眠项目。 为此&#xff0c;我们将在JPA中使用一个基本的spring boot项目。 Spring Boot使用休眠作为默认的JPA提供程序。 我们的设置将非常接…

mysql事务实战_mysql事务隔离级别详解和实战

A事务做了操作 没有提交 对B事务来说 就等于没做 获取的都是之前的数据但是 在A事务中查询的话 查到的都是操作之后的数据没有提交的数据只有自己看得到&#xff0c;并没有update到数据库。查看InnoDB存储引擎 系统级的隔离级别 和 会话级的隔离级别&#xff1a;mysql> sele…

微云 linux_编年史与微云

微云 linux总览 我面临的一个常见问题是&#xff1a; 如果是单个作者&#xff0c;多个读者&#xff0c;如何缩放基于Chronicle的系统。 尽管有解决此问题的方法&#xff0c;但很有可能根本不会有问题。 微云 这是我用来描述单个线程来完成当前由多个服务器完成的工作的术语。 …

H3C 计算子网内可用主机地址数

转载于:https://www.cnblogs.com/fanweisheng/p/11153665.html

mysql中两次排序_MySQL中的两种排序方式: index和filesort

index &#xff1a;通过有序索引顺序扫描直接返回有序数据&#xff0c;不需要额外的排序&#xff0c;操作效率较高。filesort&#xff1a;通过对返回数据进行排序&#xff0c;filesort 并不代表通过磁盘文件排序&#xff0c;而是说明进行了一个排序操作&#xff0c;至于排序操作…