Как настроить подсистему Infispan WIldfly для JPA L2 Cache? - PullRequest
0 голосов
/ 22 января 2019

Я пытаюсь включить кэш JPA L2 на Wildfly 14. Несмотря на то, что я добавил, кэширование конфигурации не происходит. Журналы говорят, что объекты кэшируются, но кажется, что кеш не используется при их извлечении.

Я использую Hibernate в качестве поставщика JPA, и это мои конфиги.

  • standalon-ha.xml в wildfly.

    <cache-container name="hibernate">
        <transport lock-timeout="60000"/>
        <local-cache name="local-query">
            <object-memory size="10000"/>
            <expiration max-idle="100000"/>
        </local-cache>
        <invalidation-cache name="entity">
            <transaction mode="NON_XA"/>
            <object-memory size="10000"/>
            <expiration max-idle="100000"/>
        </invalidation-cache>
        <replicated-cache name="timestamps"/>
    </cache-container>
    
  • persistance.xml

    <persistence-unit name="mysqlPersistenceUnit" transaction-type="JTA">
    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
    <!--<exclude-unlisted-classes>false</exclude-unlisted-classes>-->
    <shared-cache-mode>ALL</shared-cache-mode>
    <jta-data-source>java:/DataSourceName</jta-data-source>
    <properties>
        <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
        <property name="hibernate.archive.autodetection" value="class"/>
        <!--<property name="hibernate.show_sql" value="true"/>-->
        <!--<property name="hibernate.format_sql" value="true"/>-->
        <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.JBossTransactionManagerLookup"/>
        <!-- cache -->
        <property name="hibernate.cache.use_second_level_cache" value="true" />
        <property name="hibernate.cache.region.factory_class" value="org.hibernate.cache.infinispan.InfinispanRegionFactory"/>
        <property name="hibernate.cache.use_query_cache" value="true" />
        <property name="hibernate.generate_statistics" value="true" />
        <property name="hibernate.cache.infinispan.statistics" value="true"/>
    </properties>
    

  • Сущности

    @Entity
    @Cacheable
    @Table(name = "table_name")
    public class EntityName implements Serializable { // }
    

Это вывод, который я получаю из Hibernate при выполнении запросов к базе данных. И каждый раз, когда я вижу, что делаются запросы к БД.

[org.hibernate.engine.internal.StatisticalLoggingSessionEventListener] (default task-1) Session Metrics {
664166 nanoseconds spent acquiring 2 JDBC connections;
125120 nanoseconds spent releasing 2 JDBC connections;
1002407 nanoseconds spent preparing 2 JDBC statements;
989037118 nanoseconds spent executing 2 JDBC statements;
0 nanoseconds spent executing 0 JDBC batches;
1994332 nanoseconds spent performing 2 L2C puts;
0 nanoseconds spent performing 0 L2C hits;
0 nanoseconds spent performing 0 L2C misses;
366780 nanoseconds spent executing 1 flushes (flushing a total of 2 entities and 0 collections);
201076 nanoseconds spent executing 2 partial-flushes (flushing a total of 1 entities and 1 collections)

1 Ответ

0 голосов
/ 23 января 2019

У нас есть учебник Infinispan Hibernate Cache для WildFly здесь .Я настоятельно рекомендую вам следовать этому.В настоящее время он использует WildFly 15, но должен нормально работать с WildFly 14.

Самое важное, что вам нужно знать, это то, что вам не нужна половина свойств, которые вы определили в своем файле persistence.xml.См. здесь .

Это и многие другие простые руководства по Infinispan можно найти здесь .В частности, у нас есть простые учебники, показывающие, как использовать автономный Infinispan Hibernate Cache или в приложениях Spring.Эти варианты использования могут незначительно отличаться по конфигурации.

...