ID de versión generado de base de datos con WSJPA

Java™ Persistence API for WebSphere Application Server (WSJPA) tiene un OpenJPA ampliado para trabajar con ID de versión generados de base de datos. Estos cambios de versión generados, indicación de fecha y hora o señal, se pueden utilizar para detectar eficazmente los cambios en una fila determinada.

Se da soporte a la generación de ID de versión basada en desencadenantes en todas las bases de datos a las que da soporte WebSphere Application Server. El soporte se basa en dos estrategias de versión de JPA para WebSphere Application Server.
  • @VersionStrategy("com.ibm.websphere.persistence.RowChangeTimestampStrategy"), si el tipo de campo de versión de entidad es Timestamp, y
  • @VersionStrategy("com.ibm.websphere.persistence.RowChangeVersionStrategy"), si el tipo de campo de versión de entidad es Long
La clase de entidad se define con la nueva versión de estrategia de anotación. La entidad tiene una columna de versión sustituta.Por ejemplo,
@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;
}
La sentencia de crear tablas es la siguiente:
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 las actualizaciones de Item, insert o update, el valor de VersionColumn se actualiza en la base de datos. Después de la actualización, el valor de VersionColumn se recupera de la base de datos y se actualiza en el objeto en memoria. Por lo tanto, los objetos en la memoria caché de datos reflejan el valor de versión correcto. Aquí la entidad utiliza @VersionColumn que produce un ID de versión sustituta en lugar de definir un campo explícito en la entidad.

La entidad también podría utilizar la anotación @Version para definir un campo explícito de versión. El campo explícito de versión podría ser de tipo Long o Timestamp correspondiente a @VersionStrategy. Durante las actualizaciones de Item, insert o update, el valor Version se actualiza en la base de datos. Después de la actualización, el valor de Version se recupera de la base de datos y se actualiza en el objeto en memoria. Por lo tanto, los objetos en la memoria caché de datos reflejan el valor de versión correcto.

Este es un ejemplo en el que la Entidad tiene un campo de versión definido y el tipo Timestamp coincide con RowChangeTimestampStrategy en @VersionStrategy. Si el tipo de campo de versión utiliza el tipo long, se deberá anotar RowChangeVersionStrategy de forma que coincida con:
@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;
}
Avoid trouble Avoid trouble: Tenga en cuenta las condiciones siguientes al utilizar RowChangeVersionStrategy:
  • Para z/OS DB2 V9 y Linux, UNIX y Windows DB2 V9.5, la columna de base de datos generada debe ser del tipo de indicación de fecha y hora (timestamp) pero se soporta tanto RowChangeTimestampStrategy como RowChangeVersionStrategy. Microsoft SQL Server sólo da soporte a un ID de versión generado que no sea de indicación de fecha y hora y que vaya con RowChangeVersionStrategy. Para utilizar RowChangeTimestampStrategy, debe utilizar un desencadenante en el campo de indicación de fecha y hora de la base de datos. Para otras bases de datos, puede utilizar desencadenantes para simular la generación de versión de base de datos y utilizar cualquiera de las dos estrategias.
  • Para z/OS DB2 V9, instale el PTF para el APAR PK67706 y asegúrese de que hayainstalado el nivel necesario de IBM® Optim PureQuery Runtime (1.3.100 o posterior) y los controladores JCC (3.52.95 o posterior).
gotcha

Icon that indicates the type of topic Concept topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cejb_genversionID
File name: cejb_genversionID.html