glassfish_具有GlassFish和一致性的高性能JPA –第1部分

glassfish

您以前听说过连贯性吗? 可能是。 它是那些著名的内存网格解决方案之一,这些解决方案承诺了出色的快速数据访问和无限空间用于您经常使用的数据。 其中一些众所周知的竞争对手是Infinispan , Memcached和Terracotta Ehcache 。 它们都是很棒的,而Coherence最糟糕的部分可能是它不是开源的。 这是一个由四部分组成的系列文章的第一部分,我将在其中简短说明Coherence与GlassFish的结合使用。 旨在向您简要介绍可能的情况。 以下内容将更详细,并以具体示例描述配置。

为什么要连贯?

但是,为什么我选择了Coherence而不是其他任何一个? 我喜欢与GlassFish合作,并且最近一直在寻求与那些内存网格之一进行稳定且轻松的集成,以解决一些数据密集型用例。 因此,首先要看的是Oracle产品堆栈。 这种想法或多或少地推动着,必须将任何类型的集成都集成到EclipseLink中,这是GlassFish附带的JPA 2.0 RI。 特别是因为有了带有JPA 2.0的新的Cache API。

最初的研究表明该主题中的信息泄漏。 到目前为止,上述产品均未与EclipseLink进行任何插件或其他集成。 即使EclipseLink有一个称为“缓存拦截器”的框架,它使您能够非常轻松地绑定第三方缓存系统,我仍在寻找(可能受支持的)ootb解决方案。 因此,我最终关注了Coherence。 小提示:我不是询问许可或费用的合适人选。 我要做的就是根据OTN许可证使用Coherence。

什么是连贯性?

Oracle Coherence是内存中的数据网格解决方案。 您可以使用Coherence扩展关键任务应用程序,以提供对常用数据的快速访问。 通过在多个服务器之间自动动态地对内存中的数据进行分区,即使在服务器发生故障的情况下,Coherence也可以实现连续的数据可用性和事务完整性。 它是一个共享的基础架构,将数据本地性与本地处理能力结合在一起,可以执行实时数据分析,内存网格计算以及并行事务和事件处理。

网格上JPA的策略

所有内存数据网格解决方案都具有非常简单的put / get API。 您发出类似的内容:

Cache.put(key, object);
Cache.get(key);

将对象存储到缓存中或从缓存中取回它们。 一致性将负责将所有内容持久化到数据库中(可能使用EclipseLink)。 从应用程序的角度来看,这似乎是一个非常简单的API。 我们称之为“ JPA支持的缓存”。 但这只是三种可能的情况之一。 第二种是用于JPA的L2缓存方法,这基本上意味着您只需实现基于JPA的应用程序并在第二步中插入一致性。 第三是前两个的结合,并且将所有数据库操作直接重定向到Coherence。 这三者都有其优点,当然也有缺点。

产品和定义

此时最好最好看看周围的不同产品和名称。 JPA 2 RI是EclipseLink ,它是Oracle商业产品TopLink的一部分 。 所有的Coherence集成都是TopLink Grid产品的一部分,该产品还包含EclipseLink作为JPA实现。

1)JPA支持的缓存

您可以将Coherence API与通过JPA映射的数据库支持的缓存一起使用。 网格通过JPA CacheLoader和CacheStore实现访问关系数据。 在这种“传统”一致性方法中,TopLink Grid提供了针对EclipseLink JPA优化的CacheLoader和CacheStore实现。 ( EclipseLinkJPACacheLoaderEclipseLinkJPACacheStore ),它们都包含在toplink-grid.jar文件中。 这样,您将使用标准的JPA运行时配置文件persistence.xml和JPA映射文件orm.xml。 必须指定Coherence缓存配置文件coherence-cache-config.xml来覆盖默认的Coherence设置并定义CacheStore缓存方案。

我将在系列的第二部分中向您展示此示例。

2)JPA L2缓存

网格缓存配置使用Coherence作为JPA共享(L2)缓存。

主键查询尝试首先从Coherence获取实体,如果不成功,将查询数据库,并用查询结果更新Coherence。 针对数据库执行非主键查询,并针对Coherence检查结果,以避免缓存实体的对象构建成本。 新查询的实体将放入Coherence。 写入操作将更新数据库,如果成功提交,则将更新后的实体放入Coherence。

我将在系列的第三部分中向您展示此示例。

3)具有JPA支持的缓存的JPA L2缓存

网格实体配置应由需要快速访问大量相当稳定的数据并且执行相对较少更新的应用程序使用,结合使用Coherence作为二级缓存,使用后写功能通过异步执行数据库更新来缩短应用程序响应时间。 读取操作从Coherence缓存中获取对象。 写入操作将对象放入Coherence缓存中,已配置的二级缓存对数据库执行写入操作。

我将在系列的最后一部分向您展示此示例。

进一步的阅读和下载:

参考: 具有GlassFish和Coherence的高性能JPA –来自我们JCG合作伙伴 Markus Eisele的 第1部分 ,在“使用Java进行企业软件开发”博客中

相关文章 :
  • 具有GlassFish和一致性的高性能JPA –第2部分
  • 具有GlassFish和一致性的高性能JPA –第3部分
  • 在云中开发和测试
  • Java EE中的配置管理
  • 泄漏:Oracle WebLogic Server 12g
  • Java EE6装饰器:在注入时装饰类
  • Java教程和Android教程列表

翻译自: https://www.javacodegeeks.com/2011/11/high-performance-jpa-with-glassfish-and.html

glassfish

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

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

相关文章

推荐几个开发高薪技术产品(APP、网站、小程序)的原型设计工具

工欲善其事必先利其器。作为一名产品经理,如何才能快速地设计一款产品?一款优秀的产品原型工具必不可少。如何才能选择一款适合自己的原型工具呢?Benson特意整理了11款产品原型工具以供参考,并学习曲线,性价比&#xf…

狼群战术

狼群战术 Time Limit : 1000 MS Memory Limit : 65536 KB Description 二战中德军潜艇使用狼群战术使得盟军的运输线遭受重大的损失。盟军截获了德军潜艇的通信电报,但电报显然是加了密的,经过盟军解密人员和情报人员的努力,终于解密了德军…

计算机网络和通信,计算机网络与通信技术

spContent本课程以谢希仁老师的第七版《计算机网络》为教材,采用随堂录制和录音棚录制两种方式满足同学们学习的不同习惯,本次开课加入了三个可以线上完成的重要实验。通过本门课程的学习,系统地建立计算机网络通信的理论体系,掌握…

APP界面常用的五种颜色搭配

众所周知,每一种颜色带给用户的视觉感受也是不同的。现在人们对手机的依赖程度,就能看到手机中APP的发展前景,那今天就跟大家聊聊如何通过颜色搭配的不同来进行移动端APP界面的布局和排版设计。移动端UI界面中通常是需要选取主色,…

JavaOne 2015 –提交的技巧和建议

大家都知道JavaOne 。 感觉就像一直在那儿。 而且,即使我们跌宕起伏,而地理位置也不是我们想要的那样,旧金山也很昂贵,而且和。 这是有关各种Java的顶级会议。 今年又再次成为程序委员会(“ Java,DevOps和云…

Oracle 数据库导入导出 dmp文件

首先询问对方数据库的表空间名称和大小,然后在你的oracle中建立相应表空间,最后使用命令导入、导出数据。补充:1.要新建一个数据库; Oracle数据导入导出imp/exp就相当于oracle数据还原与备份。exp命令可 以把数据从远程数据库服务…

计算机网络课程计划,计算机网络教学计划2017

计算机网络教学计划2017教学计划(课程计划)是课程设置的整体规划,它规定不同课程类型相互结构的方式,也规定了不同课程在管理学习方式的要求及其所占比例。下面是小编整理的计算机网络教学计划范文,希望对你有帮助!计算机网络教学计划(一)一、…

hdu 4267 多维树状数组

题意&#xff1a;有一个序列 "1 a b k c" means adding c to each of Ai which satisfies a < i < b and (i - a) % k 0. (1 < a < b < N, 1 < k < 10, -1,000 < c < 1,000)"2 a" means querying the value of Aa. (1 < a …

微信服务商开发能力说明文档

最近看到很多人复制我的这篇文章,我也是醉了,你起码搞个转载,注明出处, 然后设置付费文档,发现也不好使,文章比较简短,别人也能免费看到我的文章全部内容, 无奈之下,再次打开这篇文章开始编辑, 前面增加一些废话, 看看有多少人复制我的文档,我都不想评论,找各…

html中scope的作用,AngularJS 作用域(Scope)

AngularJS 作用域(Scope)作用域(Scope)是一个存储应用数据模型的对象为 表达式 提供了一个执行上下文作用域的层级结构对应于 DOM 树结构作用域可以监听 表达式 的变化并传播事件作用域有什么作用域提供了 ($watch) 方法监听数据模型的变化作用域提供了 ($apply) 方法把不是由A…

跳转到企业缓存之前要考虑的事项

介绍 关系数据库事务是ACID &#xff0c;强大的一致性模型简化了应用程序开发。 由于启用Hibernate缓存是一项配置 &#xff0c;因此&#xff0c;只要数据访问层开始显示性能问题&#xff0c;就转向缓存非常吸引人。 添加缓存层确实可以提高应用程序性能&#xff0c;但是它有其…

去小公司了解哪些工具?

程序员开发需要具备良好的信息检索能力&#xff0c;为了备忘&#xff0c;将开发过程中常用的网站进行整理。 1、搜索引擎 1.1、秘迹搜索 一款无敌有良心、无敌安全的搜索引擎&#xff0c;不会收集私人信息&#xff0c;保护私隐&#xff0c;没有Cookie&#xff0c;并且秘迹搜索…

(027) Linux之shell分支if语句

十年运维系列之基础篇 - Linux 作者&#xff1a;曾林 联系&#xff1a;1494445739qq.com 网站&#xff1a;www.jplatformx.com 版权&#xff1a;文章未经同意请勿转载 一、使用if语句 通过shell&#xff0c;我们可以来写出这样的一个使用if语句的shell脚本片段。如下所示&…

解锁计算机桌面,电脑锁屏按什么键解锁

按回车键即可解锁。具体的解锁过程如下1、先将电脑设置一个密码&#xff0c;再使用电脑锁屏快捷键将屏幕锁掉&#xff0c;最后按回车键解锁。首先在电脑桌面上点击开始菜单&#xff0c;找到控制面板点击并进入。2、然后在弹出的界面找到“用户账户和家庭安全”&#xff0c;并单…

ppt如何旋转流程图_张伟随笔37:我书写方程式和画流程图的方法

珠海海洋王国里的海象山张伟 2020.11.23我书写方程式和画流程图的方法首发/化学张伟/2020.05.13书写化学方程式&#xff0c;在word里面可以实现一部分&#xff0c;例如&#xff0c;我要书写高锰酸钾受热分解为锰酸钾、二氧化锰和氧气&#xff0c;化学式有上下标&#xff0c;可以…

职业技术人士学习捷径最快的网站

由于最近研究大数据相关的技术及前沿技术,对常用的几个网站做一下分享(包含技术网站+最新资讯网站): 1. 36Kr 网站:https://36kr.com/ 提供创业资讯、科技新闻、投融资对接、股权投资、极速融资等创业服务,致力成为创业者可以依赖的创业服务平台,为创业者提供最好的产品和…

单元测试编写_为什么要编写单元测试-测试技巧8

单元测试编写我对最近的博客“您应该测试什么”有很多React&#xff0c;有些人出于各种原因与我达成一致&#xff0c;另一些人则认为建议某些类可能不需要单元测试是完全危险的。 已经处理了什么测试&#xff0c;今天的博客涉及为什么要编写单元测试&#xff0c;而今天的示例代…

webapi get请求 FromUri list参数传递

今天做项目调用第三方的webapi时&#xff0c;发现get请求竟然用的是FromUri list参数&#xff0c;汗... 这里简单记录下请求传参的方式&#xff08;但不推荐大家使用get FromUri list参数 来定义webapi的功能&#xff09;&#xff1a; 1        HttpClient hClient new…

51cto 检测ip地址冲突_在Linux中发现IP地址冲突的方法

IP冲突&#xff0c;是不会像Windows那样&#xff0c;在右下角弹出冲突提示的。博主就出过一次糗&#xff0c;记得当时是在VM虚拟机里面安装了4个4个Redhat都是VM克隆出来的、完全一致的原来&#xff0c;是那台频繁掉线的虚拟系统和其他部门的办公电脑出现了IP冲突&#xff0c;由…

在计算机网络中可用于信息传输的介质,在计算机网络中,双绞线、同轴电缆及光纤等用于传输信息的载体被称为______介质。...

函数ReadDat()的功能是实现从文件ENG49.IN中读取一篇英文文章&#xff0c;存入到字符串数组xx中。请编制函数encryptChar()&#xff0c;按给定的替代关系对数组xx中所有字符进行替代&#xff0c;仍存入数组xx的对应的位置上&#xff0c;最后调用函数WriteDat()把结果xx输出到文…