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

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

为什么要连贯?

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

最初的研究显示该主题中的信息泄漏。 到目前为止,上述产品均未与EclipseLink进行任何插件或其他集成。 即使EclipseLink拥有一个称为“缓存拦截器”的框架,该框架使您能够非常轻松地绑定第三方缓存系统,我仍在寻找一种(可能受支持的)ootb解决方案。 所以我最后看了连贯性。 小说:我不是询问许可或费用的合适人选。 我要做的就是根据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

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

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

相关文章

boost原理与sklearn源码_机器学习sklearn系列之决策树

一、 Sklearn库 Scikit learn 也简称 sklearn, 自2007年发布以来,scikit-learn已经成为Python重要的机器学习库了。支持包括分类、回归、降维和聚类四大机器学习算法。还包含了特征提取、数据处理和模型评估三大模块。sklearn是Scipy的扩展,建立在NumPy和…

STM32F1笔记(二)GPIO输入

STM32 GPIO输入的经典应用是按键。 先看电路。声明:参考正点原子战舰开发板。 在这里可以看到,KEY_UP按键是高电平有效的,即当按下该按键时,GPIO读到高电平。 KEY0/1/2是低电平有效的,即当按下该按键时,G…

STM32F1笔记(三)UART/USART

UART:Universal Asynchronous Receiver/Transmitter(通用异步收/发器) USART:Universal Synchronous/Asynchronous Receiver/Transmitter(通用同步/异步串行收/发器) 从命名即可看出USART就是UART的基础上…

python安装界面翻译_python环境搭建

如果想要运行python需要有解释器和编辑器。 什么是解释器 解释器我们可以把它理解成翻译官,它是将我们写的python代码翻译成计算机能够懂得机器语言。 然后计算机收到解释器的命令来干活,最终再将结果反馈在解释器中。 解释器推荐使用anaconda3 什么是an…

进阶篇-用户界面:4.Android中常用组件

1.下拉菜单 在Web开发中&#xff0c;HTML提供了下拉列表的实现&#xff0c;就是使用<select>元素实现一个下拉列表&#xff0c;在其中每个下拉列表项使用<option>表示即可。这是在Web开发中一个必不可少的交互性组件&#xff0c;而在Android中的对应实现就是Spinne…

http的“无连接”指的是_http协议无状态中的 quot;状态quot; 到底指的是什么?...

引子&#xff1a;最近在好好了解http&#xff0c;发现对介绍http的第一句话【http协议是无状态的&#xff0c;无连接的】就无法理解了&#xff1a;无状态的【状态】到底指的是什么&#xff1f;&#xff01;找了很多资料不仅没有发现有一针见血正面回答这个问题的&#xff0c;而…

个人日志-7.4

姓名 刘鑫 时间 2016.7.4 学习内容 完善需求分析报告。撰写数据库设计说明书。初步安排计划概要设计说明书。调整项目开发计划说明书。 所遇问题 无 解决方案 无 转载于:https://www.cnblogs.com/liuxin13070013/p/5641967.html

STM32F1笔记(五)外部中断EXTI

STM32的每个IO都可以作为外部中断的中断输入口。 STM32F103的中断控制器支持19个外部中断/事件请求。每个中断设有状态为&#xff0c;每个中断/事件都有独立的触发和屏蔽设置。 STM32F103的19个外部中断为&#xff1a; EXTI线0~15&#xff1a;对应外部IO口的输入中断。 EXT…

STM32F1笔记(六)独立看门狗IWDG

STM32F1内置了两个看门狗&#xff0c;独立看门狗IWDG和窗口看门狗WWDG&#xff0c;可以用来检测和解决由软件错误引起的故障。 IWDG最适合应用于那些需要看门狗作为一个在主程序之外&#xff0c;能够完全独立工作&#xff0c;并且对时间精度要求较低的场合。WWDG最适合那些要求…

在JSF 2中对定制验证器进行参数化

在JSF 2中编写自定义验证器并不复杂。 您实现Validator接口&#xff0c;添加FacesValidator批注&#xff0c;并在faces-config.xml中插入Validator声明&#xff0c; 仅此而已 。 一块蛋糕。 但是&#xff0c;让我们考虑以下情形&#xff1a; 您需要自定义日期验证器&#xff0c…

STM32F1笔记(七)WWDG窗口看门狗

窗口看门狗与独立看门狗最大的不同是中断&#xff0c;窗口看门狗拥有一个提前唤醒中断。也就是在快要产生复位的前一段时间&#xff08;T[6:0]0x40&#xff09;来提醒需要进行喂狗&#xff0c;否则将复位。因此当窗口看门狗的计数器值减到0x40的时候&#xff0c;产生中断&#…

groovy怎样从sql语句中截取表名_Mysql和SQL

基本概念1.数据库DataBase简称&#xff1a;DB2.什么数据库&#xff1f;——用于存储和管理数据的仓库。存储过程是一个预编译的SQL语句&#xff0c;优点是允许模块化的设计&#xff0c;就是说只需创建一次&#xff0c;以后在该程序中就可以调用多次。3.数据库的特点&#xff1a…

STM32F1笔记(八)时钟

STM32有五种时钟源 1、HSI。高速内部时钟&#xff0c;RC振荡器&#xff0c;频率为8MHz。 2、HSE。高速外部时钟&#xff0c;可接石英/陶瓷谐振器&#xff0c;或者借外部时钟源&#xff0c;频率范围为4MHz~16MHz。 3、PLL。锁相环倍频输出&#xff0c;其时钟输入源可选择为HS…

java常用工具类(一)

一、String工具类 package com.mkyong.common; import java.util.ArrayList; import java.util.List; /** * * String工具类. <br> * * author 宋立君 * date 2014年06月24日 */ public class StringUtil { private static final int INDEX_NO…

python可以下载百度文库_不用下载券也能下载百度文库资料,Python帮你轻松搞定...

大家可能平时都有在百度文库下载文档的经历&#xff0c;费尽心思好不容易在文库找了一份可以用的资料&#xff0c;一看需要用下载券下载&#xff0c;搞的人很烦。 有的人为了节省时间&#xff0c;就任性办理了个文库VIP&#xff0c;再也不用纠结怎么下文档了。如果你是一个百度…

STM32F1笔记(九)通用定时器

STM32F1的定时器分为TIME1/8等高级定时器&#xff0c;TIME2~5等通用定时器&#xff0c;TIME6/7基本定时器。三者的区别主要参考《STM32中文参考手册》里特性的每种定时器主要特性的异同。 先看中文手册中通用定时器的简介&#xff1a; 通用定时器的寄存器有一个比较有趣的地方…

c++保存图标到dll_自动保存邮件附件至指定文件夹

最近有个需求&#xff0c;ERP系统会自动发很多csv附件到我邮箱&#xff0c;我需要把这些附件上传到FTP服务器&#xff0c;服务器会把这些csv的数据写到另外一个系统的数据库。每次大概有30个邮件&#xff0c;每个邮件有一个附件&#xff0c;而且附件的名字都一样&#xff0c;是…

有时在Java中,一个布局管理器是不够的

在开发Java Swing应用程序时&#xff0c;最经常的是&#xff0c;我们需要在多个嵌套面板中使用多个布局管理器。 通常这不是问题&#xff0c;并且被认为是几乎所有人类已知语言的所有UI开发的常规做法。 但是&#xff0c;大多数情况下&#xff0c;对于UI中的每个面板&#xff0…

python中print的用法_Python中print函数简单使用总结

Python中print函数简单使用总结 print函数是Python的入门&#xff0c;每一个学习python的人都绕不开这个函数&#xff0c;下面介绍一下这个函数的用法。 打开电脑&#xff0c;选择python软件&#xff0c;下面选择python 3.7为例进行介绍&#xff0c;点击python 3.7&#xff0c;…

STM32F1笔记(十)PWM

PWM&#xff1a;Pulse Width Modulation&#xff0c;脉冲宽度调制。是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单来说就是对脉冲宽度的控制。 在《STM32中文参考手册》里可以看到 占空比&#xff1a;占空比是指在一个脉冲循环内&#xff0c;通电时…