日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

将Ehcache添加到Openxava应用程序

發布時間:2023/12/3 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 将Ehcache添加到Openxava应用程序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
介紹

本文介紹如何在Openxava應用程序上快速啟用Ehcache,從而提高性能。

查看實體及其圖時,將加載關系。 添加第二級緩存可加快關聯元素的檢索速度,因為已加載的元素是從緩存而不是數據庫中檢索的。

最終,該頁面解釋了分鐘項目如何遵守諾言:不寫任何內容。
例如,我們將以Lazuly分鐘項目展示為例。

Openxava-Ehcache集成

在Openxava中,您可以使用Java注釋的POJO來描述模型。注釋來自標準的JPA2 ORM和特定于Openxava的注釋。
但是沒有什么可以阻止您添加其他人。 完成添加緩存的操作。 還有一些配置可以啟用緩存。

行動清單

  • 在源的根目錄添加ehcache.xml配置文件
  • 修改persistence.xml以包括二級緩存
  • 添加緩存注釋(與JPA2一起)
  • 備注:

    Openxava帶有ehcache.jar,因此無需添加依賴項。

    詳細動作

    添加ehcache.xml

    在/ persistence處的ehcache.xml文件中

    <ehcache><defaultCachemaxElementsInMemory="1000"eternal="false"timeToIdleSeconds="300"timeToLiveSeconds="300"overflowToDisk="false"diskPersistent="false"diskExpiryThreadIntervalSeconds="300"memoryStoreEvictionPolicy="LRU"/><cachename="your.domain.object"maxElementsInMemory="5000"eternal="false"timeToIdleSeconds="300"timeToLiveSeconds="600"overflowToDisk="false"/> </ehcache>

    修改persistence.xml

    Persistence.xml文件包含與永久單元有關的信息,例如連接池信息,
    類或配置加載。 'persistence.xml'位于/ persistence / META-INF中

    我們將附加L2緩存的屬性。

    <properties><property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/><property name="hibernate.cache.provider_class" value="net.sf.ehcache.hibernate.SingletonEhCacheProvider" /><property name="net.sf.ehcache.configurationResourceName" value="/ehcache.xml" /><property name="hibernate.cache.use_query_cache" value="true" /><property name="hibernate.cache.use_second_level_cache" value="true" /><property name="hibernate.generate_statistics" value="true" /> </properties>

    添加緩存注釋

    這里使用的是休眠注釋,而不是標準注釋(實際上,可緩存似乎不起作用)
    將緩存注釋放置在域對象的類級別。

    @org.hibernate.annotations.Cache(usage = org.hibernate.annotations.CacheConcurrencyStrategy.READ_WRITE)

    懶惰的應用

    Lazuly是一個示例數據庫,其中包含用于MinuteProject展示目的的會議信息。
    Minuteproject生成了一組綜合的偽像,以加快OX應用程序的發布。
    可以在Minuteproject 4 Openxava Lazuly展示柜中找到更多信息。 在這一部分,我們重點介紹為特定于緩存生成的偽像。 用于生成的Minuteproject本身基于配置文件,我們在其中定義數據模型以進行反向工程。 在此配置中,有一個擴充部分,您可以在其中添加信息。 處理實體類型中包含的內容類型的信息之一。 有4種可能性(參考數據,主數據,偽靜態數據,實時業務數據) 如果您使用content-type =“ master-data”或“ reference-data”豐富您的實體,MinuteProject 4 Openxava將生成關聯的緩存。

    這是針對國家實體在這里完成的。

    <entity name="COUNTRY" content-type="reference-data">

    這是與緩存有關的偽像

    ehcache.xml

    <ehcache><!--Sets the path to the directory where cache files are created.If the path is a Java System Property it is replaced by its value in therunning VM.The following properties are translated:* user.home - User's home directory* user.dir - User's current working directory* java.io.tmpdir - Default temp file pathSubdirectories can be specified below the property e.g. java.io.tmpdir/one--> <!--MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @ehcache-main-config-conference@--><diskStore path="java.io.tmpdir"/><!--Mandatory Default Cache configuration. These settings will be applied to cachescreated programmtically using CacheManager.add(String cacheName)--><defaultCachemaxElementsInMemory="1000"eternal="false"timeToIdleSeconds="300"timeToLiveSeconds="300"overflowToDisk="false"diskPersistent="false"diskExpiryThreadIntervalSeconds="300"memoryStoreEvictionPolicy="LRU"/> <!-- The unnamed query cache --><cachename="org.hibernate.cache.StandardQueryCache"maxElementsInMemory="1000"eternal="false"timeToLiveSeconds="300"overflowToDisk="false"/> <!--MP-MANAGED-UPDATABLE-ENDING--><!--MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @cache-entity-country-conference@--><cachename="net.sf.mp.demo.conference.domain.admin.Country"maxElementsInMemory="5000"eternal="false"timeToIdleSeconds="300"timeToLiveSeconds="600"overflowToDisk="false"/> <!--MP-MANAGED-UPDATABLE-ENDING--><!--MP-MANAGED-ADDED-AREA-BEGINNING @custom-cache-definition@--> <!--MP-MANAGED-ADDED-AREA-ENDING @custom-cache-definition@--></ehcache>

    Persistence.xml

    <persistence xmlns="http://java.sun.com/xml/ns/persistence"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"version="1.0"><!-- Tomcat + Hypersonic --><persistence-unit name="default"><non-jta-data-source>java:comp/env/jdbc/conferenceDS</non-jta-data-source><class>org.openxava.session.GalleryImage</class><properties><property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/><property name="hibernate.cache.provider_class" value="net.sf.ehcache.hibernate.SingletonEhCacheProvider" /><property name="net.sf.ehcache.configurationResourceName" value="/ehcache.xml" /><property name="hibernate.cache.use_query_cache" value="true" /><property name="hibernate.cache.use_second_level_cache" value="true" /><property name="hibernate.generate_statistics" value="true" /> <!--MP-MANAGED-ADDED-AREA-BEGINNING @properties@--> <!--MP-MANAGED-ADDED-AREA-ENDING @properties@--></properties> <!--MP-MANAGED-ADDED-AREA-BEGINNING @persistence-unit@--> <!--MP-MANAGED-ADDED-AREA-ENDING @persistence-unit@--></persistence-unit> <!--MP-MANAGED-ADDED-AREA-BEGINNING @persistence@--> <!--MP-MANAGED-ADDED-AREA-ENDING @persistence@--></persistence>

    類注解

    @org.hibernate.annotations.Cache(usage = org.hibernate.annotations.CacheConcurrencyStrategy.READ_WRITE) //MP-MANAGED-ADDED-AREA-BEGINNING @class-annotation@ //MP-MANAGED-ADDED-AREA-ENDING @class-annotation@ public class Country {@Hidden @Id @Column(name="id" )@GeneratedValue(strategy = GenerationType.AUTO)private Integer id; ...

    生成的代碼備注

    生成的代碼在文件擴展名注釋中包含標記。

    在MP-MANAGED-ADDED-AREA-BEGINNING和MP-MANAGED-ADDED-AREA-ENDING中,您可以放置??自定義代碼
    在MP-MANAGED-UPDATABLE-BEGINNING-DISABLE和MP-MANAGED-UPDATABLE-ENDING中,您可以更改代碼。 要保留您的修改,請將MP-MANAGED-UPDATABLE-BEGINNING-DISABLE更改為MP-MANAGED-UPDATABLE-BEGINNING-ENABLE。 可更新的代碼可防止您連續幾代丟失定制。

    有關可更新代碼的更多信息,請參見Minuteproject可更新代碼 。

    • 將以下文件mp-config-LAZULY-OPENXAVA.xml放在/ mywork / config中
    • 在提示符下執行mp-model-generation(.sh / cmd)mp-config-LAZULY-OPENXAVA.xml
    • / DEV / output / openxava / conference中產生的人工制品

    要生成,請使用mp-config-LAZULY-OPENXAVA.xml的更新版本

    <!DOCTYPE root> <generator-config><configuration><conventions><target-convention type="enable-updatable-code-feature" /></conventions> <model name="conference" version="1.0" package-root="net.sf.mp.demo"><data-model><driver name="mysql" version="5.1.16" groupId="mysql" artifactId="mysql-connector-java"></driver><dataSource><driverClassName>org.gjt.mm.mysql.Driver</driverClassName><url>jdbc:mysql://127.0.0.1:3306/conference</url><username>root</username><password>mysql</password></dataSource><!--for Oracle and DB2 please set the schema <schema> </schema>--><primaryKeyPolicy oneGlobal="true"><primaryKeyPolicyPattern name="autoincrementPattern"></primaryKeyPolicyPattern></primaryKeyPolicy></data-model><business-model><!--<generation-condition> <condition type="exclude"startsWith="DUAL"></condition> </generation-condition>--><business-package default="conference"><condition type="package" startsWith="STAT" result="statistics"></condition><condition type="package" startsWith="COUNTRY" result="admin"></condition><condition type="package" startsWith="ROLE" result="admin"></condition> </business-package><enrichment><conventions><column-naming-convention type="apply-strip-column-name-suffix"pattern-to-strip="_ID" /><reference-naming-conventiontype="apply-referenced-alias-when-no-ambiguity" is-to-plurialize="true" /></conventions><entity name="COUNTRY" content-type="reference-data"><semantic-reference><sql-path path="NAME" /></semantic-reference></entity><entity name="CONFERENCE_MEMBER"><semantic-reference><sql-path path="FIRST_NAME" /><sql-path path="LAST_NAME" /></semantic-reference><field name="STATUS"><property tag="checkconstraint" alias="conference_member_status"><property name="PENDING" value="PENDING" /><property name="ACTIVE" value="ACTIVE" /></property></field><field name="EMAIL"><stereotype stereotype="EMAIL" /></field></entity><entity name="SPEAKER"><field name="BIO"><stereotype stereotype="HTML_TEXT" /></field><field name="PHOTO"><stereotype stereotype="PHOTO" /></field><field name="WEB_SITE_URL"><stereotype stereotype="WEBURL" /></field></entity><entity name="PRESENTATION"><field name="STATUS"><property tag="checkconstraint" alias="presentation_status"><property name="PROPOSAL" value="PROPOSAL" /><property name="ACTIVE" value="ACTIVE" /></property></field></entity><entity name="SPONSOR"><field name="STATUS"><property tag="checkconstraint" alias="sponsor_status"><property name="PENDING" value="PENDING" /><property name="ACTIVE" value="ACTIVE" /></property></field><field name="PRIVILEGE_TYPE"><property tag="checkconstraint" alias="sponsor_privilege"><property name="GOLDEN" value="Golden" /><property name="SILVER" value="Silver" /><property name="BRONZE" value="Bronze" /></property></field></entity><!-- views --><entity name="stat_mb_per_ctry_conf" alias="MEMBER_PER_COUNTRY_AND_CONFERENCE"><virtual-primary-key isRealPrimaryKey="true"><property name="virtualPrimaryKey" value="ID" /></virtual-primary-key></entity><entity name="stat_mb_by_role" alias="MEMBER_PER_ROLE_COUNTRY_AND_CONFERENCE"><virtual-primary-key isRealPrimaryKey="true"><property name="virtualPrimaryKey" value="id" /></virtual-primary-key><field name="stat_mb_per_ctry_conf_ID" linkToTargetEntity="stat_mb_per_ctry_conf"linkToTargetField="id"></field></entity></enrichment></business-model></model><targets><!-- openxava --><target refname="OpenXava" name="OpenXava"fileName="mp-template-config-openxava-last-features.xml"outputdir-root="../../DEV/output/openxava/conference"templatedir-root="../../template/framework/openxava"></target><target refname="JPA2-LIB" fileName="mp-template-config-JPA2-LIB.xml"templatedir-root="../../template/framework/jpa"></target><target refname="BSLA-LIB" fileName="mp-template-config-bsla-LIB-features.xml"templatedir-root="../../template/framework/bsla"></target><target refname="CACHE-LIB" fileName="mp-template-config-CACHE-LIB.xml" templatedir-root="../../template/framework/cache"></target></targets></configuration> </generator-config>

    測試
    為確保緩存正常工作:

    • 啟用休眠日志記錄。 將以下代碼段作為額外屬性添加到persistence.xml中。
    <property name="hibernate.show_sql" value="true" /><property name="hibernate.format_sql" value="true" />
    • 導航到引用國家/地區的實體(示例地址)
    • 當您查看此實體的詳細信息時,您會注意到相關實體“國家”的負載很大
    • 但是,第二次訪問該實體(或引用同一國家/地區實例的另一個實體)的詳細信息時,該國家/地區不會從數據庫中加載兩次。

    參考: JCG合作伙伴 將Ehcache添加到Openxava應用程序 ? 分鐘項目博客上的 Florian Adler。


    翻譯自: https://www.javacodegeeks.com/2012/03/adding-ehcache-to-openxava-application.html

    總結

    以上是生活随笔為你收集整理的将Ehcache添加到Openxava应用程序的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。