[seasar-s2dao-dev:477] Re: DBのメタデータを使わないストアド実行の仕様について

Toshihiro Nakamura [E-MAIL ADDRESS DELETED]
2007年 8月 29日 (水) 11:44:44 JST


中村(taedium)です。

プロシージャの呼び出しですが、
旧コマンド(StaticStoredProcedureCommand)を使うか、
新コマンド(ArgumentDtoProcedureCommand)を使うかの
条件分岐をどうすべきか迷っています。
みなさんの意見を聞かせてください。

ちょっと長いですけど、お付き合いおねがします(^^;

以下、現時点の案です。
他によいものがあればぜひ。

私は案2に傾いています。

■案1(現時点の仕様)
Daoメソッドに渡すパラメータの数が1つでかつ、パラメータのDTOに
@ProcedureParametersがついていたら新コマンドとする。
それ以外は旧コマンドとする。

利点は...
  ・旧コマンドだけで十分な人には影響がない
  ・新旧の併用ができる

欠点は...
  ・Daoの定義だけではどちらのコマンドが使われるのかわかりづらい
  ・プロシージャにパラメータが存在しなくてもDaoのメソッドには
    @ProcedureParametersがついているだけのDTOを渡さないといけない
   (使いづらい)
  ・@ProcedureParametersの指定を忘れると旧コマンドが動いてしまう

■案2
@ProcedureCallを作成しこれがDaoメソッドに指定されている場合
新コマンドとする。
@Procedureはdeprecatedとする。

利点は...
  ・Daoの定義だけではどちらのコマンドが使われるのかわかる
  ・プロシージャにパラメータが存在しない場合はDaoメソッド
    もパラメータなしにできる
  ・@ProcedureParametersをなしにできる
  ・新旧コマンドの位置づけが明確になる
  ・新旧の併用ができる

欠点は...
  ・旧コマンドを使っている人がduplicatedになることを嫌がる
  ・@ProcedureCallと@Procedureの違いがわかりにくい

■案3
diconでコマンドを切り替えられるようにする

利点は...
  ・旧コマンドだけで十分な人には影響がない
  ・まちがって意図しないコマンドが動くということがない

欠点は...
  ・併用できない(乗り換えづらい)
-- 
Toshihiro Nakamura <[E-MAIL ADDRESS DELETED]>



seasar-s2dao-dev メーリングリストの案内