OpenJPA에서는 기본적으로 L2(second-level) 캐시를 사용 안함으로 설정하는 반면 EclipseLink에서는 기본적으로 L2(second-level) 캐시를 사용으로 설정합니다. 이 캐시를 사용하지 않는 애플리케이션을 마이그레이션하는 경우, 버전 2.0 또는 2.1 persistence.xml 파일에서 다음 요소를 설정하여 EclipseLink에서 캐시를 사용 안함으로 설정할 수 있습니다.
<shared-cache-mode>NONE</shared-cache-mode>
버전 1.0 persistence.xml 파일의 경우, 다음 특성을 추가하여 EclipseLink에서 캐시를 사용 안함으로 설정할 수 있습니다.
<property name="eclipselink.cache.shared.default" value="false"/>
이 규칙은 META-INF/persistence.xml 파일에서 현재 캐싱 구성이 EclipseLink에서 다른 기본 캐싱 동작을
초래하는 <persistence-unit> 구성을 발견합니다. 또한 EclipseLink가 무시하는
openjpa.DataCache 특성을 정리하는 데에도 도움이 됩니다.
구성 변경이 필요한지 여부를 판별하기 위해 규칙은 다음 설정을 조합하여 검사합니다.
<shared-cache-mode> 구성 요소javax.persistence.sharedCache.mode 지속성 특성openjpa.DataCache 지속성 특성openjpa.DataCache 특성을 지정하지 않거나 false로 설정되었고
공유 캐시 모드 구성이 누락되었거나 UNSPECIFIED로 설정된 경우 EclipseLink에서
캐시를 사용하지 않도록 구성을 변경해야 합니다. EclipseLink는 기본적으로 캐싱을 사용하므로 OpenJPA에서 openjpa.DataCache 특성을
true로 설정하는 것은 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 파일에서,
OpenJPA에서와 동일한 캐싱 동작을 EclipseLink에서도 유지보수하기 위해 캐싱 구성에 대한
변경이 필요하므로 규칙은 모든 <persistence-unit> 요소에 플래그를 지정합니다.
| OpenJPA의 소스 persistence.xml 파일 | EclipseLink 의 persistence.xml 파일에 대한 자동화된 수정사항 변경사항 |
|---|---|
<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 구성 특성 마이그레이션에 대한 자세한 정보는 다음 자원을 참조하십시오.