以前のトレイルでは、投資計算アプリケーションでデータベース内で利用可能な投資会社(fund)と投資家(investor)が、名前と主キーを含む形でドロップダウンリストに表示されることを述べました。その計算プログラムの最下部にはデータベースから過去の計算記録のリストもあります。(しかし)、データベースからそれらのデータを取得する方法については議論しませんでした。
実際のところ、EJB QLを使って、あるテーブルからすべての行を取得することはとても簡単です。次のコード片はFund
テーブルからすべての投資会社(fund)を取得する方法を示します。それはSQLをご存知の方にはとても簡単に理解できるものです。EntityManager.createQuery()
はEJB QL文を使ってクエリーを生成します。listResults()
メソッドはそのクエリーにマッチするエンティティBeanのコレクションを返します。
@Stateless
public class QueryCalculator implements Calculator {
@PersistenceContext
protected EntityManager em;
public Collection <Fund> getFunds () {
return em.createQuery("from Fund f").getResultList();
}
// ... ...
}
次のコードはTimedRecord
テーブルの行の完全なリストを取得する方法を示します。結果はリストの最初にもっとも最近の記録が返されます。
@Stateless
public class QueryCalculator implements Calculator {
@PersistenceContext
protected EntityManager em;
// ... ...
public Collection <TimedRecord> getRecords () {
return em.createQuery(
"from TimedRecord r order by r.ts desc").getResultList();
}
// ... ...
}
上のコードが動く様子を見るためには、以下のボタンを叩いて前回のトレイルのサンプルアプリケーションを試してみて下さい。