この手順では、このチュートリアルで作成したデータベース接続、エンティティ、および Java クラスが組み込まれた Web アプリケーションをインポートします。このアプリケーションには、DAO クラス、JSP、およびサーブレットが含まれています。アプリケーションをインポートしたら、新しいサーバを作成してアプリケーションを実行します。
この手順のタスクは以下のとおりです。
インポートしたアプリケーションには、データ アクセス オブジェクトと管理対象 Bean が含まれています。また、faces-config.xml ファイルをインポートすることによってプロジェクトも作成され、アプリケーションのナビゲーションやユーザ インタフェースを構成する JSP を管理できるようになります。
Web アプリケーション プロジェクト workshop-jpa-tutorial の場合、データ アクセス レイヤ オブジェクトは com.bea.dao パッケージに含まれています。このパッケージ内のオブジェクトを確認します。
DAO レイヤは、Kodo JPA を使用して、バックエンド データベースへのアクセスを提供します。Kodo JPA とは、Sun が開発した Java オブジェクトの透過的な永続性に関する仕様である Java 永続性 API (JPA) の BEA Systems 実装です。
- DAOFactory.java - DAOFactory は、永続性に JPA を使用する DAO インスタンスを作成するためのファクトリ クラスです。データベース アクセス オブジェクトを取得するためのパブリック メソッドを定義します。
public CustomerDAO getCustomerDAO() {
return new CustomerDAO_Kodo();
}
public OrderDAO getOrderDAO() {
return new OrderDAO_Kodo();
}- DAOHelper.java - このクラスは、persistence.xml で定義した永続性単位名を使用して EntityManagerFactory インスタンスを作成します。また、インスタンス化された EntityManagerFactory を閉じるためのメソッドも備えています。
- public static EntityManagerFactory createEntityManagerFactory (String name)
{
EntityManagerFactory emf = Persistence.createEntityManagerFactory(name);
return emf;
}- public static void closeEntityManagerFactory (EntityManagerFactory emf) {
try{
if(emf != null){
emf.close();
}
}catch(Exception e){ }
}
- CutomerDAO.java - CustomerDAO は、顧客の詳細を取得するためのメソッドを定義するインタフェースです。
- public interface CustomerDAO {
- public void addCustomer(Customer customer) throws DAOException;
public Customer getCustomer(Integer customerId) throws DAOException;
public Customer[] getAllCustomers( ) throws DAOException;
}
- CutomerDAO_Kodo.java - CustomerDAO_Kodo クラスは、CustomerDAO インタフェースを実装し、JPA API を使用して Customer データを取得および格納します。
- データベースへのアクセスを可能にするため、JPA API にはあらかじめ以下の手順が実装されています。
- 特定の永続性単位の EntityManagerFactory インスタンスを作成する。
- 特定の作業単位内のデータベースにアクセスするための EntityManager を作成する。
EntityManager em = null;
EntityManagerFactory emf = null;emf = DAOHelper.createEntityManagerFactory("unitK");
em = emf.createEntityManager();
- getCustomer(...) メソッドでは、Query オブジェクトを使用してデータベースから情報を取得します。
Query query = em.createQuery(
"SELECT c FROM Customer c where c.customerid = ?1")
.setParameter(1, customerId);
List results = query.getResultList ();
for (Object res : results)
customer = (Customer) res;- addCustomer(...) メソッドは、Customer データをデータベースに格納します。
tx.begin();
em.persist(customer);
tx.commit ();
web/WEB-INF/config フォルダには、管理対象 Bean のコンフィグレーションおよび Web アプリケーションのナビゲーション ルールをコンフィグレーションする faces-config.xml が格納されています。
この手順では、Workshop で使用する WebLogic Server ドメインを追加します。 このサーバ ドメインには、アプリケーションで必要なランタイム ライブラリが含まれており、アプリケーションはこのサーバにデプロイされます。
アプリケーションは、CustomerManagedBean の addCustomer( ) アクション メソッドを呼び出し、顧客が正常に追加されたら、リクエストを viewAllCustomers.jsp に転送します。viewAllCustomers.jsp は、<h:dataTable> コンポーネントを使用して顧客リストを取得し、次の図のように表示します。
チュートリアルを移動するには、矢印をクリックしてください。