繁体   English   中英

如何为 JPA L2 缓存配置 WIldfly infinispan 子系统?

[英]How to configure WIldfly infinispan subsystem for JPA L2 Cache?

我正在尝试在 Wildfly 14 上启用 JPA L2 缓存。即使我添加了配置缓存也没有发生。 日志说实体正在被缓存,但在检索它们时似乎没有使用缓存。

我使用 Hibernate 作为 JPA 提供程序,这些是我的配置。

  • 野蝇中的standalon-ha.xml。

     <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>
  • 持久性.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)

我们在此处为 WildFly 提供了 Infinispan Hibernate Cache 教程。 我强烈建议你遵循这一点。 它目前使用 WildFly 15,但应该可以与 WildFly 14 配合使用。

要知道的最重要的事情是,您不需要在persistence.xml 中定义的一半属性。 这里

这和许多其他 Infinispan 简单教程,可以在这里找到。 特别是,我们有简单的教程展示了如何独立使用 Infinispan Hibernate Cache 或在 Spring 应用程序中使用。 这些用例的配置可能略有不同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM