JBuilder9+Weblogic7實戰篇Entity Bean運用(二) (轉)

gugu99發表於2007-08-17
JBuilder9+Weblogic7實戰篇Entity Bean運用(二) (轉)[@more@]

JBuilder9+LOGIC7實戰篇:namespace prefix = o ns = "urn:schemas--com::office" />

ENTITY BEAN的運用(二)

 

作者:黃 凱   

E_:

五、使用 QL開發查詢

5.1 什麼是EJB QL

  在關係的操作中查詢是經常使用的,主要是透過語句完成的。Entity Bean作為代表資料庫中資料的永續性也同樣需要查詢操作,即能夠找到符合某一查詢條件的Entity Bean的例項。Entity Bean的查詢操作是透過定義finder()方法完成的。對於CMP,定義finder()方法僅僅是宣告一個方法,指明finder()方法的引數,該引數通常與查詢條件中的引數對應,真正完成查詢的動作是由EJB容器完成的。EJB容器要讀取部署描述ejb-jar.xml(在*.jar/META-INF裡)中的項,該項包含了與finder()方法相對應的查詢語句。項中的查詢語句遵循的語法規範是EJB QL。

  EJB QL的開發查詢步驟如下:

1>  在Home介面中增加finder()方法,其引數為查詢條件中用到的引數;

2>  在ejb-jar.xml檔案的項定義EJB QL語句。

  EJB QL是EJB2.0新加入的特性,它實現瞭如何在Home介面中定義各種查詢方法。它以-92為基礎,可以由容器自動編譯,這使得Entity Bean具有更高的可移植性,並且容易部署。

  EJB QL語句由select、where、orderby三個子句組成,其後兩個子句是可選的。

  EJB QL查詢語句舉例如下:

  例1:

  SELECT stu FROM Student AS stu WHERE stu.grade > 5

  該查詢語句的含義是查詢grade>5的Student Bean例項。“Student”是抽象名(Abstract schema name),在ejb-jar.xml檔案中項指定的名稱。“stu”是Student的別名,引入別名的好處是可以引用所代表的欄位。stu.grade表示Student的grade欄位,稱為路徑。

  例2:

  SELECT i FROM Student As i WHERE i.name = ?1

  該查詢語句的含義是查詢名字與finder()方法中的第一個引數相同的Student Bean例項。

  WHERE字句的使用說明:

★  以?n代表相應的finder()方法的輸入引數;

★  字串型別的值要用單引號括起來(如果值中有單引號,則用雙引號代替)

WHERE語句中可以使用的表示式和運算子如下:

☆  +,-,*,/,=,=,>,<>,NOT,AND,OR

☆  between

☆  like

☆  in

☆  member of

☆  is null(is not null)

內建:

●  CONCAT(String first,String second)

●  SUBSTRING(String ,int start,int length)

●  LOCATE(String source,String patter)

●  LENGTH(String source)

5.2 查詢方法開發例項

5.2.1 開啟《Entity Bean的運用(一)》中建立的comSample工程。雙擊工程視窗中cmpSample.jpx/Cmp,在文件視窗的EJB Designer中用滑鼠右鍵單擊Student項,選擇Add/Finder選單項,建立一個finder()方法。

5.2.2 設定finder()方法的各種引數。

  ★ Finder Name: finyName (finder()方法的名字)

★  Return type: StudentRemote(返回物件的型別)

★  Input parameter: .lang.String name (輸入引數)

★  Query: SELECT i FROM Student As i WHERE i.stuname = ?1(完成該查詢的EJB QL語句)

5.2.3 檢視Student Entity Bean的Home介面(StudentHome.java)會發現增加了一個finder()方法,該方法的定義如下:

  public Student findByName(String name) throws FinderException;

5.2.4右鍵單擊工程視窗中cmpSample.jpx/Cmp,選擇Rebuild命令重新打包。

5.2.5 啟動Weblogic Server,然後右鍵單擊工程視窗中cmpSample.jpx/Cmp,選擇Deploy Options for "Cmp.jar"/Redeploy命令重新部署。

5.2.6 透過EJB Test Client Wizard新建一個客戶端StudentTestClient2.java,因為EJB已經改變了,所以不能用先前建立的客戶端程式。修改main()方法如下:

  public static void main(String[] args)

  {

  StudentTestClient2 client = new StudentTestClient2();

  client.studentRemote = client.findByName("student2");

  System.out.println("The student2's id is " + client.getStuid());

  }

  該方法中透過findByName()方法查詢名字為student2的Entity Bean例項,然後輸出該Entity Bean對應的stuid值。

5.2.7 執行客戶端程式,驗證結果。

  為了簡單,僅使用了一個引數,並且返回的是一個Bean例項。如果查詢的結果不唯一,那麼需要設定返回值為一個集合(Collection)。

參考

電子工業出版社  《應用開發(Jbuilder+Weblogic)》

我的文章首發牛耳論壇()和程式設計師論壇(/" target=_blank>),歡迎轉載,不過,請保留作者以及修訂者的名字,謝謝。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-963530/,如需轉載,請註明出處,否則將追究法律責任。

相關文章