Проблема в кэшировании второго уровня + Spring Boot + Java Hibernate

Вот версия, которую я скопировал из https://gist.github.com/1847816 , но переписан, поэтому ее легче читать и отлаживать. Цель копирования данных привязки в другую переменную с именем «результат» заключается в том, что данные привязки довольно длинные, поэтому копирование ограниченного числа значений в результат поможет упростить результат.

/**
 * See: https://gist.github.com/1847816
 * Parse a URI, returning an object similar to Location
 * Usage: var uri = parseUri("hello?search#hash")
 */
function parseUri(url) {

  var result = {};

  var anchor = document.createElement('a');
  anchor.href = url;

  var keys = 'protocol hostname host pathname port search hash href'.split(' ');
  for (var keyIndex in keys) {
    var currentKey = keys[keyIndex]; 
    result[currentKey] = anchor[currentKey];
  }

  result.toString = function() { return anchor.href; };
  result.requestUri = result.pathname + result.search;  
  return result;

}

0
задан clint 17 January 2019 в 10:41
поделиться

1 ответ

Вы можете использовать или JPA-кэширование (я думаю, @Cacheable связано с JPA) или Hibernate, поэтому вы должны рассмотреть 2 сценария.

Сценарий JPA

В случае JPA: в соответствии со спецификацией JPA, чтобы включить кэширование JPA (является ли @Cacheable аннотация JPA?), Необходимо указать <shared-cache-mode> в вашем 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_2_0.xsd" version="2.0">
  <persistence-unit name="SimpleTest" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <shared-cache-mode>ENABLE_SELECTIVE</shared-cache-mode>
    <properties>
    </properties>
  </persistence-unit>
</persistence>

Сценарий гибернации

В случае использования кэширования гибернации вы должны использовать [116 ] аннотация, предоставленная Hibernate ( Hibernate @Cache )

Более того, если вы используете hibernate-объект Query, вы должны указать, что запрос должен кэшироваться, выполняя что-то вроде этого:

[111 ]

Вы можете найти больше здесь https://www.baeldung.com/hibernate-second-level-cache

Я надеюсь, что это полезно

0
ответ дан Angelo Immediata 17 January 2019 в 10:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: