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實現。 ( EclipseLinkJPACacheLoader和EclipseLinkJPACacheStore ),它們都包含在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緩存中,已配置的二級緩存對數據庫執行寫入操作。
我將在系列的最后一部分向您展示此示例。
進一步的閱讀和下載:
- 相干性3.6
- TopLink網格11g(11.1.1.3.0)
- Toplinkgrid示例(需要登錄OTN)
參考: 具有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
總結
以上是生活随笔為你收集整理的glassfish_具有GlassFish和一致性的高性能JPA –第1部分的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑硬盘如何外接用(电脑硬盘如何外接使用
- 下一篇: 乐视超4x55电脑版(乐视超5x55s)