If you are working with Postgres and using JPA via Hibernate, here’s a short cut to get MVCC without having to add an extra column to your database tables:
@Column(name = "xmin", columnDefinition = "xid") @Version @Generated(GenerationTime.ALWAYS) private int version;
Postgres automatically creates and maintains the “xmin” column, and JPA already supports the concept of @Version columns. Hibernate adds on support for database-generated Version columns. Now, xmin is really a “xid” type, but it happily accepts casting to and from Java’s int type.