OpenJPA выключает кэш второго уровня по умолчанию, а в EclipseLink он по умолчанию включен. В случае миграции приложения, не использующего кэш, можно выключить кэш в EclipseLink, настроив следующий элемент в файле persistence.xml версии 2.0 или 2.1:
<shared-cache-mode>NONE</shared-cache-mode>
В файле persistence.xml версии 1.0 для выключения кэша в EclipseLink можно добавить следующее свойство:
<property name="eclipselink.cache.shared.default" value="false"/>
Это правило находит такие конфигурации <persistence-unit> в
META-INF/persistence.xml, в которых текущая
настройка кэширования приводит к другому режиму работы кэша по умолчанию в
EclipseLink. Кроме того, это правило позволяет удалить свойства openjpa.DataCache, которые игнорируются EclipseLink.
Это правило определяет, требуется ли изменять конфигурацию, по следующей комбинации параметров:
<shared-cache-mode>javax.persistence.sharedCache.modeopenjpa.DataCache
Если свойство openjpa.DataCache не задано или равно
false, а режим общего кэша не задан или равен
UNSPECIFIED, то в конфигурации EclipseLink необходимо выключить кэш.
Поскольку по умолчанию кэш в EclipseLink включен, то настройка значения
true для свойства openjpa.DataCache в OpenJPA
эквивалента отсутствию параметра режима общего кэша в EclipseLink или наличию
параметра shared-cache-mode со значением ALL.
Если
конфигурация openjpa.DataCache была удалена вручную, не выполняйте
это правило, так как оно не сможет найти конфигурацию, для которой необходимо внести изменения.
Автоматическое исправление для этого правила задает явное значение для режима совместного кэширования, чтобы правило не поместило флаг persistence-unit.
Автоматическое исправление оценивает параметр openjpa.DataCache и изменяет существующие или создает новые
Конфигурацияshared-cache-mode или свойства javax.persistence.sharedCache.mode , чтобы приложения имели одинаковой режим кэширования в EclipseLink , как и в OpenJPA.
В OpenJPA при наличии настроенного значения общего кэша, предусмотренного в
спецификации, и настроенного свойства openjpa.DataCache используется значение,
предусмотренное в спецификации, если оно не равно UNSPECIFIED.
Если оно равно UNSPECIFIED, то режим общего кэша определяется с помощью свойства openjpa.DataCache.
Например, в следующем файле persistence.xml
правило отмечает все элементы <persistence-unit>, так как
для сохранения в EclipseLink того режима кэширования, который применялся в
OpenJPA, требуется изменить конфигурацию кэширования.
| Исходный файл persistence.xml для OpenJPA | Автоматическое исправление изменений в файле persistence.xml для EclipseLink |
|---|---|
<persistence>
<persistence-unit name="example1">
...
<shared-cache-mode>UNSPECIFIED</shared-cache-mode>
...
</persistence-unit>
<persistence-unit name="example2">
...
<properties>
<property name="openjpa.DataCache" value="true"/>
</properties>
...
</persistence-unit>
<persistence-unit name="example3">
...
<properties>
<-- no cache properties set -->
</properties>
...
</persistence-unit>
<persistence-unit name="example4">
...
<properties>
<property name="openjpa.DataCache"
value="false"/>
<property name="javax.persistence.sharedCache.mode"
value="ALL"/>
</properties>
...
</persistence-unit>
</persistence>
|
<persistence>
<persistence-unit name="example1">
...
<shared-cache-mode>NONE</shared-cache-mode>
...
</persistence-unit>
<persistence-unit name="example2">
...
<shared-cache-mode>ALL</shared-cache-mode>
<properties>
</properties>
...
</persistence-unit>
<persistence-unit name="example3">
...
<shared-cache-mode>NONE</shared-cache-mode>
<properties>
<-- no cache properties set -->
</properties>
...
</persistence-unit>
<persistence-unit name="example4">
...
<properties>
<property name="javax.persistence.sharedCache.mode"
value="ALL"/>
</properties>
...
</persistence-unit>
</persistence>
|
Автоматическое исправление удаляет свойство openjpa.DataCache , если оно имеет простой
Значениеtrue или false .
Если в конфигурации свойства openjpa.DataCache есть дополнительные параметры, например, в следующем примере, автоматическое исправление оставляет свойство, чтобы определить, требуются ли какие-либо дополнительные изменения вручную.
Проверьте, что нужно дополнительно сделать для миграции свойства
openjpa.DataCache, а затем удалите это свойство, так как оно не
поддерживается в EclipseLink.
<property name="openjpa.DataCache" value="true(Types=com.test.Person;com.test.Employee)"/>
Если и shared-cache-mode , и javax.persistence.sharedCache.mode определены в одном и том же persistence-unit, автоматическое исправление обновляет значение shared-cache-mode
, если требуется, и удаляет свойство javax.persistence.sharedCache.mode .
Для JPA 1.0 < span class= "FilePath">persistence.xml< /span> файлы < code> < shared-cache-mode> < /code> недопустим. Автоматическое исправление оценивает значения свойств хранения < code>openjpa.DataCache< /code> и < code>javax.persistence.sharedCache.mode< /code> и добавляет в случае необходимости свойство хранилища < code>eclipselink.cache.shared.default< /code>.
Скопируйте пользовательскую конфигурацию в файл компоновки приложения, чтобы включить автоматизацию исправлений.
За дополнительной информацией о миграции свойств конфигурации JPA различных вендоров обратитесь к следующим документам: