JBuilder9+Weblogic7實戰篇Entity Bean運用(三) (轉)
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所代表的資料記錄的級聯刪除。
本例中設定Multiplicity為one to one(1:1),Navigability為unidirectional。其他項採用預設值。
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- app實戰運用APP
- App專案實戰之路(三):原型篇APP原型
- 用Kotlin擼一個圖片壓縮外掛-實戰篇(三)Kotlin
- ItemDecoration深入解析與實戰(二)—— 實際運用
- 「實戰篇」開源專案docker化運維部署(終結篇)(11)Docker運維
- 實戰篇——SQL隱碼攻擊sqli-labs-master靶場實戰三SQLAST
- 實戰|教你用Python玩轉MysqlPythonMySql
- Gradle系列-運用篇Gradle
- channel 實戰應用,這篇就夠了!
- Nginx 最全小白實戰教程之三 (代理TCP篇)NginxTCP
- python:實戰篇Python
- Spring Boot Serverless 實戰系列“部署篇” | Mall 應用Spring BootServer
- Linux效能優化實戰CPU篇之軟中斷(三)Linux優化
- 【線上公開課】Kubernetes實戰系列三??原理篇
- 資料分析從零開始實戰 | 基礎篇(三)
- Sentinel 實戰-限流篇
- 實戰篇——CSRF漏洞pikachu靶場實戰
- Flutter完整開發實戰詳解(三、打包與填坑篇)Flutter
- DDD實戰課(實戰篇)--學習筆記筆記
- 【轉】微服務實戰微服務
- Linux 企業實戰篇Linux
- Sentinel 實戰-控制檯篇
- python基礎篇實戰Python
- 運用知名第三方IP製作遊戲面臨的三大挑戰遊戲
- gRPC應用實戰:(三)gRPC四種請求模式RPC模式
- [.NET專案實戰] Elsa開源工作流元件應用(三):實戰演練元件
- Spring Boot 揭祕與實戰(七) 實用技術篇 – FreeMarker 模板引擎Spring Boot
- 轉載:SpringBoot非官方教程 | 第三篇:SpringBoot用JdbcTemplates訪問MysqlSpring BootJDBCMySql
- 【Python 開發】第三篇:python 實用小工具Python
- 《python運維和開發實戰-高階篇》視訊課程筆記Python運維筆記
- 「實戰篇」開源專案docker化運維部署-原始碼介紹(二)Docker運維原始碼
- 「實戰篇」開源專案docker化運維部署-搭建mysql叢集(四)Docker運維MySql
- 死磕Spring之IoC篇 - @Bean 等註解的實現原理SpringBean
- 急速 debug 實戰三(Node - webpack外掛,babel外掛,vue原始碼篇)WebBabelVue原始碼
- TiDB 在轉轉的業務實戰TiDB
- Flutter實戰之路由功能篇Flutter路由
- kubernetes實戰篇之dashboard搭建
- Java 8 Stream之實戰篇Java
- Flutter實戰之動畫實現篇Flutter動畫