タイプセーフな書き方 - 一番簡単な書き方の例

S2JDBCのタイプセーフな書き方だととこうなります。

select()
.where(and(starts(name().firstName(), "Yu")))
.getResultList()

第一印象として読みにくい。

何か残念な感じだ...。

条件は一つなのにand()でいきなり括るのは違和感が...。あとフィールド名に相当する部分がメソッドになっているのも読みにくさの原因になってる。処理なの?属性なの?って迷っちゃう。

このタイプセーフな書き方になると今までの様な直感的な理解のし易さは期待出来ないからSQL書き方ドリルみたいな練習方法が必要だなぁ。学習コストはHibernateと同等位になりそう。

それを鑑みてもデータベースの変更をローコストで出来るメリットは大きいのは確か。今までのプロジェクトでDBの設計が一度でビシ!って決まった事なくて必ず変更しちゃうもんなぁ...苦笑。でも皆そうだから(それとも反復開発型だから?)S2JDBCなんて素晴らしいプロダクトが出来たんだろうし、頑張って覚えなきゃね。

追記

id:koichikさんよりコメントを頂きました。以下のように書き換える事が出来るとの事。

public List<Employee> findByName(String name) {
 return select().where(eq(name(), name)).getResultList();
}

and()はor()の中で使うために用意されているもので通常は使わない。and()がなくなるだけで随分と読みやすくなりました。