S2AbstractService ってfdじゃslkjfs。
タイトルが適当ですみません。
public class EmpService extends AbstractService<Emp> { public Emp selectById(Object... id){ return select() .id(id).getSingleResult(); } public Emp selectByIdWithDept(Object... id){ return select().join("dept") .id(id).getSingleResult(); } }S2AsbtractServiceの使い方について - じゅんいち☆かとうの技術日誌
本題とは直接関係ないですが、これって引数が可変長引数になってるのは、いくらなんでも間違いですよね。引数なしでもコンパイルエラーにならないのは怖い。
それを踏まえて、Seasar2の次のバージョンでは、select()、selectBySql()、selectBySqlFile()はprotectedにする予定です。
S2AbstractServiceは便利なJdbcManagerじゃないよ - yvsu pron. yas
いい感じですね。サービスを作った以上、自然な流れに見えます。これで開発者によって、サービスに書いたり、アクションに書いたりといったバラつきが無くなりそうです。些細なことですが、select().id() は多用するので、protected S2AbstractService#id があったほうが良い気がします。
最近、Rails でガリガリやってますが、Java のコンパイル時検証のありがたみを今更ながら感じています。でも、Rails や CakePHP のダイナミックファインダ (実行時に動的生成される find_by_カラム名 とか find_by_カラム名_and_カラム名 とか find_all_by_カラム名 とか) も強力すぎて離れられません。ブラックボックスでイラつくこともありますけど。