前回:http://blogs.wankuma.com/kazuki/archive/2008/05/28/139835.aspx
前回、簡単なステートレスなSessionビーンを作ってお手軽感を出してみた。
今回は、この間入門したJPAと組み合わせて使ってみようと思う。
ということで、この間のEJB3Edu-ejbプロジェクトにステートレスなSessionビーンを追加する。
名前は、CustomerManagerにしておく。こいつからDBへアクセスする予定だ。
次に、持続性ユニットを追加する。
samplePUという名前で、NetBeansに付属のJavaDBのsampleデータベースへの接続を追加した。
次に、このDBのテーブルを全部エンテティとして定義する。
新規作成から、データベースからのエンテティクラスを選ぶ。
データソースとして、さっき作ったsamplePUを作る際に作ったデータソースを指定すると、テーブルの情報を読み取ってくれる。
後はすべて選んで完了を押せばOK。
お手軽。下のように、クラスがばっちり作られる。
さっき作ったCustomerManagerに下のようなメソッドを定義する。
とりあえず、全件取得!
package com.wankuma.kazuki.ejb;
import com.wankuma.kazuki.jpa.Customer;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
@Stateless
public class CustomerManagerBean implements CustomerManagerLocal {
private EntityManager em;
@PersistenceContext
public void setEm(EntityManager em) {
this.em = em;
}
@SuppressWarnings("unchecked")
public Customer[] getAllCustomer() {
List<Customer> customers = em.createQuery("select c from Customer c").getResultList();
return customers.toArray(new Customer[customers.size()]);
}
}
引き続いてWebのページを新たに起こす。
もちろんEJB3Edu-warのほうに。
CustomersPageという名前でVisual Web JSFのページを作る。
private CustomerManagerLocal customerManager;
public CustomerManagerLocal getCustomerManager() {
return customerManager;
}
@EJB
public void setCustomerManager(CustomerManagerLocal customerManager) {
this.customerManager = customerManager;
}
ページに上のようなプロパティを追加して、セッションビーンが使えるようにする。
そして、表に表示するためのデータを持つプロパティも定義する。
private Customer[] customers;
public Customer[] getCustomers() {
return customers;
}
public void setCustomers(Customer[] customers) {
this.customers = customers;
}
後は、prerenderのときにデータを設定してみる。
@Override
public void prerender() {
if (customers == null) {
customers = customerManager.getAllCustomer();
}
}
後は、普通に表にデータをバインドして適当な列を表示するように設定して完了。
↓のような感じに表示される。
ここまでお手軽街道まっしぐら。
投稿日時 : 2008年5月30日 0:04