OpenJPA выключает кэш второго уровня по умолчанию, а в EclipseLink он по умолчанию включен. В случае миграции приложения, не использующего кэш, можно выключить кэш в EclipseLink, настроив следующий элемент в файле persistence.xml версии 2.0 или 2.1:
<shared-cache-mode>НЕТ</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>НЕРАСШИФРОВАННОЕ</shared-cache-mode>... </persistence-unit> <persistence-unit name=" example2 ">... <properties> <property name="openjpa.DataCache" value="true"/> </properties>... </persistence-unit> <persistence-unit name=" example3 ">... <properties><-- свойства кэша не установлены --></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>НЕТ</shared-cache-mode>... </persistence-unit> <persistence-unit name="example2"> ...
<shared-cache-mode>ВСЕ</shared-cache-mode> <properties></properties>... </persistence-unit> <persistence-unit name="example3"> ...
<shared-cache-mode>НЕТ</shared-cache-mode> <properties><-- свойства кэша не установлены --></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 persistence.xml, <shared-cache-mode> элемент не является допустимым. Автоматическое исправление оценивает значения openjpa.DataCache и javax.persistence.sharedCache.mode свойства постоянства и добавляет свойство постоянства eclipselink.cache.shared.default , когда это необходимо.
Скопируйте пользовательскую конфигурацию скопируйте пользовательскую конфигурацию в файл сборки приложения, чтобы включить автоматизацию исправлений.
За дополнительной информацией о миграции свойств конфигурации JPA различных вендоров обратитесь к следующим документам: