비선점(Optimistic) 잠금

  1. A 스레드 → 주문 애그리거트 조회
  2. B 스레드 → 주문 정보 변경
  3. A 스레드 → 주문 상태 변경
UPDATE aggtable SET version = version + 1, colx = ?, coly = ?
WHERE aggid = ? and version = 현재버전

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/c6988da5-183a-4320-9fbc-5562a411d01a/Untitled.png

@Entity
@Table(name = "purchase_order")
@Access(AccessType.FIELD)
public class Order {
	@EmeddedId
	private OrderNo orderNo;

	@Version
	private long version;
	
	...
}

비선점 잠금 방식을 위한 View