¿Cómo puedo poner Objetos con estado en el Control de versiones? ¿Tiene sentido?

Supongamos que tengo una class de usuario:

@Entity public class User { @Id private int id; private String name; //Other fields and methods } 

En un punto del time, el nombre es decir 'XYZ' y en otro momento es 'ABC'. Quiero hacer un seguimiento de ambos estados al igual que rastreamos los files en el sistema de control de versiones. Estos objects se almacenan en una database relacional. Un enfoque crudo que podría pensar es poner los datos de la database bajo control de versión, pero eso no es posible ya que la tabla de la database tendrá datos para muchos de esos usuarios y el cambio incluso en cualquiera de ellos requerirá la actualización.

¿Cómo puedo conseguir esto? ¿Cómo suelen almacenar las aplicaciones el historial de edición cuando tienen que hacerlo?

¡Gracias!

Si está utilizando hibernate, puede usar envers