in google-cloud-spanner-hibernate-dialect/src/main/java/com/google/cloud/spanner/hibernate/SpannerDialect.java [437:458]
public LockingStrategy getLockingStrategy(Lockable lockable, LockMode lockMode) {
// TODO: Remove the override in the super class to use the default implementation.
switch (lockMode) {
case PESSIMISTIC_FORCE_INCREMENT:
return new PessimisticForceIncrementLockingStrategy(lockable, lockMode);
case UPGRADE_NOWAIT:
case UPGRADE_SKIPLOCKED:
case PESSIMISTIC_WRITE:
return new PessimisticWriteSelectLockingStrategy(lockable, lockMode);
case PESSIMISTIC_READ:
return new PessimisticReadSelectLockingStrategy(lockable, lockMode);
case OPTIMISTIC_FORCE_INCREMENT:
return new OptimisticForceIncrementLockingStrategy(lockable, lockMode);
case OPTIMISTIC:
return new OptimisticLockingStrategy(lockable, lockMode);
case READ:
return new SelectLockingStrategy(lockable, lockMode);
default:
// WRITE, NONE are not allowed here
throw new IllegalArgumentException("Unsupported lock mode");
}
}