流れるようなインターフェースをViewのように再利用
SELECT文の骨格は同じなんだけど、where句があったりなかったり、Pagingがあったりなかったりするなど、微妙に違うSQL文は良くでてきます。
S2JDBCを使うと、SELECT文の骨格を返すメソッドを用意することで、それをViewのように再利用することができます。例えば、次のような感じ。
where句の一部を再利用する場合でも、同じような感じで、whereオブジェクトを返すメソッドを用意すればOKです。
protected AutoSelectcreateView() {
return select().leftOuterJoin(dept())
.leftOuterJoin(address());
}public List
findAll() {
return createView().getResultList();
}public Emp findById(Integer id) {
return createView().id(id).getSingleResult();
}public List
findByLowSalaryAndHighSalary(Integer lowSalary, Integer highSalary) {
return createView().where(ge(salary(), lowSalary), le(salary(), highSalary))
.getResultList();
}
タイプセーフな流れるようなインターフェースを使うことで、SQL文の重複部分もリファクタリングによって取り除くことができ、メンテナンス性が高まります。
SQLファイルを利用する場合は、Viewを使うことで同じような効果を得ることができます。