SQL の書き方

俺は個人的には DB テーブル名や項目名を java 定数にして、その定数を + 演算子とかで組み合わせて java ソースコードSQL を書くのは非常に馬鹿なやり方だと思っているんだけど、どうなんだろうな。そういう風に書くメリットは全く無い訳じゃ無いんだが…。データベースの項目名が変更になったら、結局全てのコードを書き直さないとならないからな。そうしないと java 定数名とその java 定数の値( DB カラム名 )との乖離が出てしまうから。だけど Eclipse の検索で java のシンボル検索が使えるというメリットはある( それに光ったりするメリットもある )。そのメリットにしても、大勢での開発となると、全ての SQL が必ず定数を使って書かれているという確証が持てない以上、どうせ java のシンボル検索は信用が出来ない。だから結局はそういう理想は崩壊する。それに何より書き辛く見辛い。だから SQL のテーブル名や項目名に定数を使う事は愚者のやる事ってのが俺の中での結論。
俺が SQL を書く際に定数を使えたら良いって言ってるのは、例えば商品区分( COMMODITY_CLASS )って項目があったとして、それに対する WHERE 条件を書く際に
String sql = "SELECT * FROM COMMODITY WHERE COMMODITY_CLASS = ?";
って SQL を書いてから
preparedStatement.setString(Constants.COMMODITY_CLASS_FLOWER);
みたいに書きたいって事なんだよ。項目名じゃ無くて値に定数を使いたいって言ってるんだよ。仮に XMLSQL を書いたりすると、java の定数を XML からは普通には参照出来ないじゃないですか。俺はその辺りが不満なんだよ。
話が戻るけどテーブル名や項目名に定数を使うメリットとして、javadoc にちゃんと日本語項目名を書けば、カーソルを乗せた時に出て来るツールチップに日本語が出て来て、日本語項目名との対応を見易いってメリットがあるみたいだ。これは確かに中々のメリットかも知れんね…。それと現場ではスキーマ名やカタログ名を微妙に変更する予定があるのかも知れない。そういう狙いがあるんか…。成程ねえ…。でも書き辛えなあ…。