ID de versão gerado pelo banco de dados com WSJPA

O Java™ Persistence API (JPA) for WebSphere Application Server (WSJPA) estendeu o OpenJPA para funcionar com IDs de versões geradas do banco de dados. Esses campos de versão gerados, registro de data e hora ou token podem ser usados para detectar com eficiência as mudanças para uma determinada linha.

A geração de ID de versão baseada no acionador é suportada para todos os bancos de dados que o WebSphere Application Server suporta. O suporte está baseado em duas Estratégias de Versão na JPA do WebSphere Application Server.
  • @VersionStrategy("com.ibm.websphere.persistence.RowChangeTimestampStrategy"), se o tipo de campo de versão de entidade for Registro de Data e Hora e
  • @VersionStrategy("com.ibm.websphere.persistence.RowChangeVersionStrategy"), se o tipo de campo de versão de entidade for Longo
A classe Entidade é definida com a nova anotação Estratégia da Versão. A Entidade possui uma coluna de versão substituta. Por exemplo:
@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;
}
A instrução create table é a seguinte:
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));
Durante quaisquer atualizações em Item, insert ou update, o valor VersionColumn é atualizado no banco de dados. Após a atualização, o valor para VersionColumn é recuperado do banco de dados e atualizado no objeto na memória. Por meio disso, os objetos no cache de dados refletem o valor correto da versão. Aqui, a Entidade está usando @VersionColumn, que produz um ID de Versão Substituto em vez de definir um campo explícito na entidade.

A Entidade também poderia utilizar a anotação @Version para definir um campo de versão explícito. O campo de versão explícito poderia ser do tipo Longo ou Registro de Data e Hora correspondente ao @VersionStrategy. Durante quaisquer atualizações em Item, insert ou update, o valor Version é atualizado no banco de dados. Após a atualização, o valor para Version é recuperado do banco de dados e atualizado no objeto na memória. Por meio disso, os objetos no cache de dados refletem o valor correto da versão.

Este é um exemplo no qual a Entidade tem um campo de versão definido e o tipo Timestamp corresponde a RowChangeTimestampStrategy em @VersionStrategy. Se o tipo de campo de versão estiver usando tipo long, RowChangeVersionStrategy deve ser anotado para correspondência:
@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;
}
Evitar Problemas Evitar Problemas: Esteja ciente das seguintes condições ao usar RowChangeVersionStrategy:
  • Para z/OS DB2 V9 e Linux, UNIX e Windows DB2 V9.5, a coluna de banco de dados gerada deve ser do tipo timestamp, mas RowChangeTimestampStrategy e RowChangeVersionStrategy são suportados. O Microsoft SQL Server suporta apenas um ID de versão gerado sem registro de data e hora com RowChangeVersionStrategy. Para usar o RowChangeTimestampStrategy, é necessário um acionador em um campo do registro de data e hora no banco de dados. Para outros bancos de dados, é possível usar acionadores para simular a geração da versão do banco de dados e usar qualquer estratégia.
  • Para z/OS DB2 V9, instale PTF para APAR PK67706 e certifique-se de ter instalado o nível necessário de IBM® Optim PureQuery Runtime (1.3.100 ou posterior) e drivers JCC (3.52.95 ou posterior).
gotcha

Ícone que indica o tipo de tópico Tópico de Conceito



Ícone de registro de data e hora Última atualização: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cejb_genversionID
Nome do arquivo: cejb_genversionID.html