Supongamos que tenemos una entidad en nuestro sistema llamada "Cliente" que se compone de los atributos [Nombre - Apellido - EsVIP]. Si modelamos esto en un sistema de persistencia con concurrencia optimista nos quedaría así:
Nombre - varchar(50)
Apellido - varchar(50)
EsVIP - bit
stamp - rowvewsion
donde stamp es un valor que siempre cambia cuando la entidad ha sufrido algún cambio en persistencia.
Como aquí hablamos de concurrencia no me voy a meter en el tema del estancamiento de datos. Para eso les remito a la esta entrada. La gestión del estancamiento de datos no debe basarse en el campo stamp.
Los pasos que vamos a seguir serán los siguientes:
- Rehidratamos la entidad desde persistencia.
- Le aplicamos los cambios respetando las reglas e invariantes del dominio.
- Intentamos persistir la entidad aplicando el control de persistencia.