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

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

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

ENTITY BEAN的運用(三)

  作者:黃 凱   

E_:

六、建立Entity Bean的關係

6.1 Entity Bean的關係描述

  因為資料之間存在一定的關係,所以代表永續性資料的Entity Bean也應該有相應的關係。例如《Entity Bean運用(一)》中2.1節中建立的兩個資料表student和locker,這兩個代表學生和課桌的資料表是有關係的,二者透過lockerid相關聯。那麼作為代表這兩個表的Entity Bean,student和locker也應該體現這種關係。Entity Bean的關係是透過在有關係的Entity Bean中建立關係欄位完成的。

  2.0支援單向、雙向關係,並且Entity Bean之間可以存在一對一(1:1),一對多(1:N)或多對多(N:N)的關係。

6.2 Entity Bean關係開發例項

6.2.1開啟《Entity Bean的運用(一)》中建立的comSample工程。參考2.2.9建立一個與locker資料表對應的Entity Bean。

6.2.2 在文件視窗的EJB Designer中單擊Locker項,將Interface設定為local/remote,其他項採用預設值。

6.2.3 在文件視窗的EJB Designer中右鍵單擊Locker項,選擇Add/Relationship選單項,將方向箭頭指向要建立關係的Entity Bean Student。

6.2.4 將方向箭頭指向Student後,可以看到在Locker中增加了一個欄位student,該欄位是代表與Locker相應的Student,稱為關係欄位。單擊關係欄位,可以設定此關係的屬性。各項含義如下:

  ★ Relationshname: 關係的名字。

★ Multiplicity: 選擇是一對一、一對多還是多對多的關係。

★ Navigability: 方向性。選擇是單向還是雙向的關係。如果選擇unidirectional,表示選擇單向關係,那麼只在Locker中建立代表Student的關係欄位。如果選擇bidirectional,表示建立雙向的關係,那麼還將在Student中建立代表Locker的關係欄位。

★ Cascade delete: 設定是否級聯刪除。級聯刪除指的是刪除一個Entity Bean時,是否相應刪除有關係的Entity Bean。此項設定為true還是false取決於具體應用的實際情況。例如在代表班級的Entity Bean與代表班級同學的Student之間建立了關係,由於班級不存在了,其成員student就也沒有存在的必要了,所以此項應設定為true。對於本例而言,此處設定為false。

★ -cascade-delete:Cascade delete的含義類似,只不過這裡設定的是Entity Bean所代表的資料記錄的級聯刪除。

  本例中設定Multiplicityone to one(1:1),Navigabilityunidirectional。其他項採用預設值。

6.2.5 單擊“Relationship properties”介面中的Edit Relation按鈕,設定student和locker資料表的關聯欄位,即指定這兩個表之間透過哪個欄位對應起來。如果這兩個表有名字相同的欄位,例如student表中有一個名位lockerid的欄位,locker表中如果也有名為lockerid的欄位,那麼Jbuilder會自認為這兩個表是透過lockid欄位關聯的。但是本例的locker表中使用的欄位不是lockerid,而是id,所以此處必須手工指定資料表的關聯欄位。

6.2.6 在“Weblogic RDBMS Relation Editor”介面中在id欄位和lockerid欄位之間用滑鼠拉一條直線,表示這兩個表透過欄位id和lockerid關聯起來。

6.2.7 在工程視窗單擊檢視Locker表的Bean類,可以看到其中增加了針對關係欄位的存取操作的程式碼:

  public abstract void setStudent(cmpsample.Student student);

  public abstract cmpsample.Student getStudent();

  相應的ejb-jar.xml和weblogic-cmp-rdbms-jar.xml中對關係的描述資訊也新增了。

6.2.8 在文件視窗的EJB Designer中右鍵單擊Locker項,選擇Add/Method選單項增加一個方法,該方法返回與Locker關聯的student資訊。

  修改該方法的設定如下:

★  Method name: getStuInfo

★  Return type: String

★  Interface: remote

6.2.9 在文件視窗的EJB Designer中右鍵單擊Locker項,選擇Add/View Bean 選單項,修改getStuInfo()方法如下:

  public String getStuInfo()

  {

  String t = null;

  try

  {

   Student stuRemote = getStudent();

  t = "student id = " + stuRemote.getStuid() + ";student name = " +

  stuRemote.getStuname();

  }

  catch (Exception e)

  {}

  return t;

  }

6.2.10 重新編譯、生成jar檔案,然後使用Redeploy命令將新生成的Cmp.jar檔案部署到Weblogic Server上。

6.2.11 建立Locker的客戶端LockerTestClient1.。

6.2.12 修改main()方法如下所示:

  public static void main(String[] args)

  {

  LockerTestClient1 client = new LockerTestClient1();

  client.findByPrimaryKey(new BigDecimal(2));

  client.getStuInfo();

  }

  該方法首先查詢一個stuid為2的Student,然後getStuInfo()方法以獲得該Student對應的Locker的資訊。

6.2.13 執行該程式,驗證結果。

參考

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

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


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

相關文章