具有GlassFish和一致性的高性能JPA –第1部分
為什么要連貫?
但是,為什么我選擇了Coherence而不是其他任何一個(gè)? 我喜歡與GlassFish一起工作,并且最近一直在尋求與那些內(nèi)存網(wǎng)格之一進(jìn)行穩(wěn)定且輕松的集成,以解決某些數(shù)據(jù)密集型用例。 因此,首先要看的是Oracle產(chǎn)品堆棧。 這種想法或多或少地驅(qū)動(dòng)著,必須將任何類型的集成都集成到EclipseLink中,這是GlassFish附帶的JPA 2.0 RI。 特別是因?yàn)橛辛藥в蠮PA 2.0的新的Cache API。
最初的研究顯示該主題中的信息泄漏。 到目前為止,上述產(chǎn)品均未與EclipseLink進(jìn)行任何插件或其他集成。 即使EclipseLink擁有一個(gè)稱為“緩存攔截器”的框架,該框架使您能夠非常輕松地綁定第三方緩存系統(tǒng),我仍在尋找一種(可能受支持的)ootb解決方案。 所以我最后看了連貫性。 小說:我不是詢問許可或費(fèi)用的合適人選。 我要做的就是根據(jù)OTN許可證使用Coherence。
什么是連貫性?
Oracle Coherence是內(nèi)存中的數(shù)據(jù)網(wǎng)格解決方案。 您可以使用Coherence擴(kuò)展關(guān)鍵任務(wù)應(yīng)用程序,以提供對(duì)常用數(shù)據(jù)的快速訪問。 通過在多個(gè)服務(wù)器之間自動(dòng)動(dòng)態(tài)地對(duì)內(nèi)存中的數(shù)據(jù)進(jìn)行分區(qū),即使在服務(wù)器發(fā)生故障的情況下,Coherence也可以實(shí)現(xiàn)連續(xù)的數(shù)據(jù)可用性和事務(wù)完整性。 它是一個(gè)共享的基礎(chǔ)架構(gòu),將數(shù)據(jù)本地性與本地處理能力結(jié)合在一起以執(zhí)行實(shí)時(shí)數(shù)據(jù)分析,內(nèi)存網(wǎng)格計(jì)算以及并行事務(wù)和事件處理。
網(wǎng)格上JPA的策略
所有內(nèi)存數(shù)據(jù)網(wǎng)格解決方案都具有非常簡(jiǎn)單的put / get API。 您發(fā)出類似的內(nèi)容:
Cache.put(key, object); Cache.get(key);將您的對(duì)象存儲(chǔ)到緩存中或從緩存中取回它們。 一致性將負(fù)責(zé)將所有內(nèi)容持久化到數(shù)據(jù)庫(kù)中(可能使用EclipseLink)。 從應(yīng)用程序的角度來看,這似乎是一個(gè)非常簡(jiǎn)單的API。 我們稱之為“ JPA支持的緩存”。 但這只是三種可能的情況之一。 第二種是用于JPA的L2緩存方法,這基本上意味著您只需實(shí)現(xiàn)基于JPA的應(yīng)用程序并在第二步中插入一致性。 第三是前兩者的結(jié)合,并且將所有數(shù)據(jù)庫(kù)操作直接重定向到Coherence。 這三者都有其優(yōu)點(diǎn),當(dāng)然也有缺點(diǎn)。
產(chǎn)品和定義
此時(shí),最好看看周圍的不同產(chǎn)品和名稱。 JPA 2 RI是EclipseLink ,它是Oracle稱為TopLink的商業(yè)產(chǎn)品的一部分。 所有的Coherence集成都是TopLink Grid產(chǎn)品的一部分,該產(chǎn)品還包含EclipseLink作為JPA實(shí)現(xiàn)。
1)JPA支持的緩存
您可以將Coherence API與通過JPA映射的數(shù)據(jù)庫(kù)支持的緩存一起使用。 網(wǎng)格通過JPA CacheLoader和CacheStore實(shí)現(xiàn)訪問關(guān)系數(shù)據(jù)。 在這種“傳統(tǒng)”一致性方法中,TopLink Grid提供了針對(duì)EclipseLink JPA優(yōu)化的CacheLoader和CacheStore實(shí)現(xiàn)。 ( EclipseLinkJPACacheLoader和EclipseLinkJPACacheStore ),它們都包含在toplink-grid.jar文件中。 這樣,您將使用標(biāo)準(zhǔn)的JPA運(yùn)行時(shí)配置文件persistence.xml和JPA映射文件orm.xml。 必須指定Coherence緩存配置文件coherence-cache-config.xml來覆蓋默認(rèn)的Coherence設(shè)置并定義CacheStore緩存方案。
我將在系列的第二部分中向您展示此示例。
2)JPA L2緩存
網(wǎng)格緩存配置使用Coherence作為JPA共享(L2)緩存。
主鍵查詢嘗試首先從Coherence獲取實(shí)體,如果不成功,將查詢數(shù)據(jù)庫(kù),并用查詢結(jié)果更新Coherence。 針對(duì)數(shù)據(jù)庫(kù)執(zhí)行非主鍵查詢,并針對(duì)Coherence檢查結(jié)果,以避免緩存實(shí)體的對(duì)象構(gòu)建成本。 新查詢的實(shí)體將放入Coherence。 寫操作將更新數(shù)據(jù)庫(kù),如果成功提交,則將更新后的實(shí)體放入Coherence。
我將在系列的第三部分中向您展示此示例。
3)具有JPA支持的緩存的JPA L2緩存
網(wǎng)格實(shí)體配置應(yīng)由需要快速訪問大量相當(dāng)穩(wěn)定的數(shù)據(jù)并且執(zhí)行相對(duì)較少更新的應(yīng)用程序使用,并與Coherence作為二級(jí)緩存結(jié)合使用,使用后寫功能通過異步執(zhí)行數(shù)據(jù)庫(kù)更新來縮短應(yīng)用程序響應(yīng)時(shí)間。 讀取操作從Coherence緩存中獲取對(duì)象。 寫入操作將對(duì)象放入Coherence緩存中,已配置的二級(jí)緩存對(duì)數(shù)據(jù)庫(kù)執(zhí)行寫入操作。
我將在系列的最后一部分向您展示此示例。
進(jìn)一步的閱讀和下載:
- 相干性3.6
- TopLink網(wǎng)格11g(11.1.1.3.0)
- Toplinkgrid示例(需要登錄OTN)
參考: 帶有GlassFish和Coherence的高性能JPA –來自我們JCG合作伙伴 Markus Eisele的 第1部分 ,在“使用Java進(jìn)行企業(yè)軟件開發(fā)”博客中
相關(guān)文章 :- 具有GlassFish和一致性的高性能JPA –第2部分
- 具有GlassFish和一致性的高性能JPA –第3部分
- 在云中開發(fā)和測(cè)試
- Java EE中的配置管理
- 泄漏:Oracle WebLogic Server 12g
- Java EE6裝飾器:在注入時(shí)裝飾類
- Java教程和Android教程列表
翻譯自: https://www.javacodegeeks.com/2011/11/high-performance-jpa-with-glassfish-and.html
總結(jié)
以上是生活随笔為你收集整理的具有GlassFish和一致性的高性能JPA –第1部分的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 工行借记卡etc多久扣费?
- 下一篇: 无需重新部署Eclipse和Tomcat