WSJPA가 있는 데이터베이스 생성 버전 ID

WSJPA(WebSphere® Application Server용 JPA(Java™ Persistence API)에서 데이터베이스 생성 버전 ID에 대해 작업하도록 OpenJPA를 확장했습니다. 이 생성된 버전 필드, 시간소인 또는 토큰은 지정된 행에 대한 변경사항을 효율적으로 발견하기 위해 사용할 수 있습니다.

WebSphere Application Server가 지원하는 모든 데이터베이스에 트리거 기반 버전 ID 생성이 지원됩니다. 지원은 WebSphere Application Server용 JPA의 두 버전 전략을 기반으로 합니다.
  • @VersionStrategy("com.ibm.websphere.persistence.RowChangeTimestampStrategy"), 엔티티 버전 필드 유형이 Timestamp인 경우 및
  • @VersionStrategy("com.ibm.websphere.persistence.RowChangeVersionStrategy"), 엔티티 버전 필드가 Long인 경우
Entity 클래스는 새 Version Strategy 어노테이션으로 정의됩니다. Entity에는 대리 버전 열이 있습니다. 예를 들어, 다음과 같습니다.
@Entity(name="Item")
@VersionColumn(name="versionField")
@VersionStrategy("com.ibm.websphere.persistence.RowChangeTimestampStrategy")
public class Item implements Serializable
{	
	@Id 
	private int id2;
	
	private String name;
	
	private double price;

   @OneToOne
   private Owner master;
}
테이블 작성 명령문은 다음과 같습니다.
CREATE TABLE ITEM
(ID2  INT  NOT NULL,
 NAME  VARCHAR(50) ,
 PRICE   DOUBLE,
 OWNER_ID INT,
             VERSIONFIELD GENERATED ALWAYS FOR EACH ROW ON 
              UPDATE AS ROW CHANGE TIMESTAMP
									PRIMARYKEY(ID2));
항목에 대한 모든 업데이트(삽입 또는 업데이트) 중에 VersionColumn 값이 데이터베이스에서 업데이트됩니다. 업데이트 후에 VersionColumn 값은 데이터베이스에서 검색되어 인메모리 오브젝트에서 업데이트됩니다. 이로 인해 데이터 캐시의 오브젝트에는 올바른 버전 값이 반영됩니다. 여기에서 Entity는 엔티티에 명시적 필드를 정의하지 않고 대리 버전 ID를 작성하는 @VersionColumn을 사용합니다.

엔티티는 또한 @Version 어노테이션을 사용하여 명시적인 버전 필드를 정의할 수 있습니다. 명시적 버전 필드의 유형은 @VersionStrategy에 해당하는 Long 또는 Timestamp입니다. 항목에 대한 모든 업데이트(삽입 또는 업데이트) 중에 Version 값이 데이터베이스에서 업데이트됩니다. 업데이트 후에 Version 값은 데이터베이스에서 검색되어 인메모리 오브젝트에서 업데이트됩니다. 이로 인해 데이터 캐시의 오브젝트에는 올바른 버전 값이 반영됩니다.

이는 Entity에 버전 필드가 정의되는 예이며 유형 Timestamp는 @VersionStrategy에서 RowChangeTimestampStrategy에 일치합니다. 버전 필드 유형이 유형 Long을 사용하는 경우 RowChangeVersionStrategy는 일치하도록 어노테이션이 추가되어야 합니다.
@Entity(name="Item")
@VersionStrategy("com.ibm.websphere.persistence.RowChangeTimestampStrategy")
public class Item implements Serializable
	
{
	@Id 
	private int id2;
	
	private String name;
	
	private double price;
   
   @Version
   private Timestamp versionField;

   @OneToOne
   private Owner master;
}
문제점 방지 문제점 방지: RowChangeVersionStrategy를 사용할 때 다음 사항에 유의하십시오.
  • z/OS® DB2® V9 및 Linux, UNIX, Windows DB2 V9.5의 경우, 생성된 데이터베이스 열의 유형은 시간소인이어야 하지만 RowChangeTimestampStrategy 및 RowChangeVersionStrategy 둘 다 지원됩니다. Microsoft SQL Server는 RowChangeVersionStrategy에 포함되는 비시간소인으로 생성된 버전 ID만 지원합니다. RowChangeTimestampStrategy를 사용하려면 데이터베이스의 시간소인 필드에서 트리거를 사용해야 합니다. 다른 데이터베이스의 경우, 트리거를 사용하여 데이터베이스 버전 생성을 시뮬레이션하고 각 전략을 사용할 수 있습니다.
  • z/OS DB2 V9의 경우, APAR PK67706에 대한 PTF를 설치하고 IBM® Optim™ PureQuery Runtime(1.3.100 이상) 및 JCC 드라이버(3.52.95 이상)의 필수 레벨을 설치했는지 확인하십시오.
gotcha

주제 유형을 표시하는 아이콘 개념 주제



시간소인 아이콘 마지막 업데이트 날짜: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cejb_genversionID
파일 이름:cejb_genversionID.html