DBFlute: Table名の文字列からそのTableのMeta情報の紹介


DB-Vender依存部分のlockForUpdate実装() {Oracle編}

「SqlClauseOracle」

public SqlClause lockForUpdate() {
final DBMeta dbmeta = DBMetaInstanceHandler.getInstanceByTableMultiName(_tableName);
if (dbmeta.hasPrimaryKey()) {
final String primaryKeyColumnName = dbmeta.getPrimaryKeyColumnDbNameOnlyFirstOne();
_lockSqlSuffix = " for update of " + _tableName + "." + primaryKeyColumnName;
} else {
final String randomColumnName = (String)dbmeta.getColumnDbNameList().get(0);
_lockSqlSuffix = " for update of " + _tableName + "." + randomColumnName;
}
return this;
}

1. Instance変数のTable名からDBMetaを取得
2-A. PKを持ったTableなら、PKのうちの最初の一つのColumn名を取得してfor update of...
2-B. PKの無いTableなら、最初の一つのColumn名を取得してfor update of ..,

というように、Table名の文字列から、「そのTableがPKが定義されているか否か」
「そのTableのPKのColumn名」、「複合PKか否か」などなどのMeta情報が取得できます。
これはDBFluteがウリにしてない密かな便利機能です。
(Documentもないしどこかに書いた覚えもない...)