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.
- @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
@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.
@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;
}

- 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).