package sample.context.orm; import java.util.*; import javax.persistence.LockModeType; /** * Query 向けの追加メタ情報を構築します。 */ public class OrmQueryMetadata { private final Map<String, Object> hints = new HashMap<>(); private Optional<LockModeType> lockMode = Optional.empty(); private OrmQueryMetadata() {} /** 内部に保持するヒント情報を返します。 */ public Map<String, Object> hints() { return hints; } /** 内部に保持するロックモードを返します。 */ public Optional<LockModeType> lockMode() { return lockMode; } /** ヒントを追加します。 */ public OrmQueryMetadata hint(String hintName, Object value) { this.hints.put(hintName, value); return this; } /** ロックモードを設定します。 */ public OrmQueryMetadata lockMode(LockModeType lockMode) { this.lockMode = Optional.ofNullable(lockMode); return this; } public static OrmQueryMetadata empty() { return new OrmQueryMetadata(); } public static OrmQueryMetadata withLock(LockModeType lockMode) { return empty().lockMode(lockMode); } public static OrmQueryMetadata withHint(String hintName, Object value) { return empty().hint(hintName, value); } }