JPAのCriteriaか(--;)
id:da-yoshiさんの「GlassFish V3 b67を使ってJava Persistence 2.0を試す - TYAGE EMOTION」を読んで、同等の事をEzJDBCで行った場合と比較してみました。。。
JPAのタイプセーフなCriteriaです。下記のソースを見てください。
何が書いてあるかさっぱり分かりません><
// CriteriaBuilderを生成します。
CriteriaBuilder qb = em.getCriteriaBuilder();
// PdOrderテーブルのCriteriaを生成
CriteriaQuerycq = qb.createQuery(PdOrder.class); // メインテーブルを設定します。
Rootorder = cq.from(PdOrder.class);
// PdOrderテーブルとUserテーブルの結合
order.fetch(PdOrder_.user, JoinType.LEFT);
// OrderItemテーブルとProductテーブルのFETCH結合
order.fetch(PdOrder_.orderDetails, JoinType.LEFT)
.fetch(OrderDetail_.product, JoinType.LEFT);
// 抽出条件の設定
cq.where(qb.like(order.join(PdOrder_.user).get(User_.name), "%" + name + "%"));
// SQLを発行し結果を取得
List= em.createQuery(cq).getResultList();
ちなみに…EzJDBCで上記と同等の事をするとこんな感じです。
// メインテーブル情報を生成します。
PD_ORDER _PD = new PD_ORDER();
// SQLを発行し結果を取得
List= EzJDBC.from(_PD._ORDER_ITEM._PRODUCT).join(_PD._USER)
.where(_PD._USER.name.like("%" + name + "%"))
.find(PdOrder.class);
き、記述量が大幅にちがいますね…( ̄口 ̄|||)