S2JDBCを使ってます。

今、仕事でS2JDBCを使っている。
TeedaとかS2Daoとかはかなり前から使っていたんだけど、
S2JDBCを使うのは始めて。
流れるようなインターフェイスってすげぇなぁ・・・とつくづく思った。


で、このS2JDBCを使う仕事、結構大きいプロジェクトなんだけど、
S2JDBCの使用に関して、私には理解不能な決まりがある。
なんか、言っても聞かなそうなので、ここで抗議してみる。


で、その決りごと。(すべてが反対ではないので、よく読んでくださいw)

S2JDBCはエンティティ1個に対してServiceクラスを作成し、それを介して処理を行うこと。

これは、大賛成。 S2JDBC(jdbcManager)を生で使用するのは気が引ける。
参考:http://d.hatena.ne.jp/dewa/20080706/1215308304

各Serviceクラスは対応するエンティティに対する処理以外はやらない。

まぁ、これも概ね賛成。
ただし、関連があるテーブルで、同期を取るためにはコチラ側でやった方がいいこともあるように思える。
例えば、ブログを作ったとしよう。
それぞれのエントリには作成者がいて、エントリには、コメントが書かれるので、
作成者 < エントリ < コメント
という具合に、1対多対応になる。


で、作成者を削除したばあい、それに紐づくエントリ及びコメントも通常削除される。
この場合、作成者・・・


とここまで書いて思った。これは分けた方がいいね。完全に賛成ってことで。www



ここからが大問題。

シンプルな問い合わせは、メソッドにしない。

Serviceクラス使ってる意味なくね?
aaSerivce.selectById(aaId);
というように、ID指定で取得するような問い合わせは、
selectById()メソッドを作らず、
aaService.select().id(aaId).getSingleResult();
って書くんだと。なんでも、メンテナンスコストが下がるとかで。
逆だろ、上がるだろこれ。