S2Daoメタデータの取得処理解析2
去年の続き。どうすればaddColumnsメソッドの呼び出しがを1度だけで済ませられるかについてメモ。
addColumns(dbMetaData, convertIdentifier(dbMetaData, schema), convertedTableName,map); addColumns(dbMetaData, schema, tableName, map); addColumns(dbMetaData, null, convertedTableName, map); addColumns(dbMetaData, null, tableName, map);
この4回呼び出しているaddColumnsメソッドの違いは、引数である「スキーマ名」「テーブル名」が異なる。各呼び出しでの値はこのとおり。
No | スキーマ名 | テーブル名 |
---|---|---|
1 | 定義されている値を変換した値*1 | 定義されている値を変換した値 |
2 | 定義されている値 | 定義されている値 |
3 | null | 定義されている値を変換した値 |
4 | null | 定義されている値 |
値そのものは変わらないので、値が誤っていたら列情報絶対見つけれないのでEND。即ち1回目の呼び出しで済ませるには、正確なテーブル名・スキーマ名を定義しておく必要がある。
これらの値の定義場所は
- スキーマ名
- テーブル名
となる。
以上。
- まとめるとエンティティのTABLEアノテーションの定義ですべてが決まる。
今までSQL自動生成おこなわない場合は、わざわざTABLEアノテーション定義していなかったけど、定義したほうがいいみたい。というか、SQL自動生成使わないならメタデータ取得する必要ないので、取得しないような設定ができていいかも。あとDatabaseMetaData#getColumns使わず、ダミーSQLを使ったメタデータ取得方法の方が高速かも。これは後で調査。