[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[jfriends-ml 11179] EJB-SQL と Dynamic Query (1/3)
高橋(智)です。
先日の読書会で、EJB-QLを固定で書かざるを得ず、柔軟な検索用クエリ
を発行してEntityBeanを取得するためにはベンダ依存のDynamic Query
機能を使用することになる、という話が出たと思います。
しかし、少し紹介しましたように、EJB2.0から追加された EJBホームメ
ソッドを使用すれば、EntityBeanのホームインターフェースを通して、自由
な検索を行えます。もちろん、このような機能はSessionBeanに追加すること
も可能ですが、他のEJB-QLによるfindByXXXXの宣言がEntityBeanにあること
を考えると、特に変な実装でもないと思います。
以下、簡単な例として
Windows2000,JDK1.3.1,MySQL,Borland Enterprise Server,JBuilder
という環境で、
--------------------------------------------
CREATE DATABASE ejbtest;
CREATE TABLE book (ID integer NOT NULL,
ISBN varchar(16) NOT NULL,
TITLE varchar(32) NOT NULL,
PRIMARY KEY (ID),
UNIQUE KEY ISBN (ISBN));
--------------------------------------------
というテーブルを作成し、
・EntiryBean名 : Book
・Homeインターフェース : BookRemoteHome
・Remoteインターフェース : BookRemote
・Bean実装クラス : BookBean
という CMP2.0 の EntiryBeanを作成し、
BookRemoteHomeに
public Collection execDynaSQL(String sql)
throws FinderException, RemoteException;
というホームメソッドを作成し、
BookBeanに
public java.util.Collection ejbHomeExecDynaSQL(java.lang.String sql)
throws FinderException
の実装を追加し、
BookTestClient1というテストクライアントから
・テスト用データ(2行)の追加
・SQL文字列 "select * from book where ISBN='1123412345' を用意
・execDynaSQLホームメソッドを利用して、Book EntityBean の取得
を行った時の
・ソースコード
・BookRemoteHome.java
・BookRemote.java
・BookBean.java
・配布ディスクリプタ
・ejb-jar.xml
・ejb-borland.xml
・テストクライアントコード
・BookTestClient1.java
を添付します。
--
高橋智宏