JPA 계단식 전략의 동작 변경 확인

이 규칙은 PERSIST, MERGE 또는 ALL 계단식 전략을 사용하여 관계로 JPA 엔티티를 정의하는 JPA 프로젝트를 플래그 지정하여 WebSphere Application Server V8.5 및 Liberty에서 JPA 2.0 구현의 기본 동작 변경을 사용자가 인식할 수 있게 합니다. 버전 8.5 이전에서는 계단식 지속(persist) 조작을 수행할 때 데이터베이스를 확인하여 엔티티가 이미 존재하는지 확인합니다. 새 기본 동작은 먼저 확인하지 않고 엔티티가 이미 데이터베이스에 있는 경우 "엔티티 키가 이미 있음" 지속성 예외 를 처리하지 않는 것입니다. 이렇게 동작을 변경하면 불필요하게 데이터베이스에 액세스할 필요가 없어져 성능이 개선됩니다.

대부분의 애플리케이션은 이러한 동작 변경에 영향을 받지 않습니다. 새 동작을 이용하기 위해 코드를 변경하거나 이전 동작으로 되돌아가기 전에 먼저 버전 8.5 환경에서 애플리케이션을 시도할 수 있습니다.

문제점이 발생하거나 지속(persist) 조작으로 먼저 데이터베이스에서 새 엔티티를 확인할 수 있게 애플리케이션을 작성했는데, 이 애플리케이션이 새로 발생할 수 있는 지속성 예외를 처리하지 못하는 경우에는 persistence.xml에서 openjpa.Compatibility 특성을 설정하여 이전 동작으로 되돌아갈 수 있습니다.

< span class="Code"> < persistence-unit name="name " transaction-type = "JTA ">
...
< span class= "indent2"> < /span> < properties>
<property name="openjpa.Compatibility" value="checkDatabaseForCascadePersistToDetachedEntity=true"/>
</properties>
</persistence-unit>

애플리케이션을 변경하고 싶지 않은 경우에는 이 특성을 서버의 JVM 시스템 특성으로 설정할 수도 있습니다.

발생할 가능성이 있는 애플리케이션 문제점과 연관된 Java 및 XML 규칙이 있으며, 이러한 규칙은 사용자의 인식을 높이는 데 도움이 됩니다. 계단식 지속(persist) 조작을 여러 위치에 정의한 경우에도 한 가지 결과만 플래그 지정됩니다. 그 결과 사용자는 이러한 문제점에 대해 전체 애플리케이션을 평가할 수 있는 기회를 얻게 됩니다.

특히, 해당 코드가 동작 변경을 적절하게 처리하는지 판별하려면 EntityManager 조작 persistmerge에 대한 호출을 평가해야 합니다. 애플리케이션을 평가하고 나면 분석 구성에서 이 규칙을 끄거나 생성된 결과를 무시할 수 있습니다.

Java 규칙은 관계 어노테이션에 정의된 다음 계단식 전략 중 하나를 플래그 지정합니다.

예를 들면, @OneToOne과 같은 관계 어노테이션에서 계단식 유형을 플래그 지정하게 됩니다.

@Entity
public class Foo {
private Bar bar;

@OneToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
public Bar getBar() {
return bar;
}
}

XML 규칙은 orm.xml 파일의 엔티티에 정의된 다음 계단식 전략 중 하나를 플래그 지정합니다.

< span class="Code"> < entity class= "com.ibm.entities.Foo" access="FIELD">
< span class= "indent2"> < /span> < 속성>
< span class= "indent4"> < /span> < 일대일 이름 =" bar">
<cascade><cascade-persist/><cascade-merge/></cascade>
</one-to-one>
</attributes>
</entity>

이러한 항목 중 하나가 플래그 지정되었는지 확인하려면 계단식 스타일 persist 또는 merge를 사용하여 엔티티에서 merge 또는 persist를 호출하는 코드를 평가해야 합니다. 새 엔티티를 삽입하기 전에 먼저 데이터베이스를 확인할 것으로 애플리케이션 코드에서 예상되는 경우에는 애플리케이션의 동작이 변경될 수 있습니다.

openjpa.Compatibility 특성을 persistence.xml에 추가하는 경우에는 다시 분석을 실행하여 관련된 ListAttribute와 관련된 JPA 메타 모델 코드 생성의 동작 변경 확인 규칙에 새 결과가 없는지 확인하십시오.

자세한 정보는 다음을 참조하십시오.