學習EJB CMP/CMR 的心得體會 (轉)
本人學習也有一年多的時間了,前段時間公司接到一個大的專案才真正的用到,客戶使用的LOGIC 7.0,用的是 SERVER 2000,所以我只能正對Weblogic+ 2000的環境來做說明。:namespace prefix = o ns = "urn:schemas--com::office" />
首先,在Weglogic中資料來源,在Weblogic中有Sql Server 2000的JC,所以就可以直接使用,注意,在EJB中一定要使用Tx-Data,另外,還要對Sql Server 2000資料庫打一個J他的,這樣才能更好的支援分散式事務的處理。
下面,我就對我們中的一個子系統做一個簡單的介紹,(參考:http://www-900.ibm.com/developerWorks/cn/cnedu.n/-onlinecourse-bytitle/991A4E2DCA2D6CE148256BCE00135FAE?OpenDocument)我基本上是根據這個例子來做的。
在本子系統中,LocalUserBean(實體)用來驗證身份,UserInfoBean(實體)使用者詳細資訊,UserGroupBean(實體)使用者分組,LocalRoleBean(實體)使用者角色,UserManageBean(會話)該子系統的唯一介面。
關係:LocalUserBean ----- UserInfoBean 是 one2one的單相關係,UserGroupBean----LocalUserBean是one2many的雙相關係,LocalUserBean----LocalRoleBean是many2many的雙相關係。
LocalUserBean----UserInfoBean:一對一的關係比較簡單
LocalUserBean的欄位 (CMP)
public abstract void setE(java.lang.String );
public abstract void setPw(java.lang.String pw);
public abstract java.lang.String getEmail();
public abstract java.lang.String getPw();
與UserInfo建立關係 (CMR)
public abstract void setUserInfo(usermanagesample.UserInfo userInfo);
public abstractUserInfo getUserInfo();
UserInfoBean的欄位 (CMP)
public abstract void setEmail(java.lang.String email);
public abstract void setDept(java.lang.String dept);
public abstract void setName(java.lang.String Name);
……
public abstract java.lang.String getEmail();
public abstract java.lang.String getDept();
public abstract java.lang.String getName();
……
由於關係是單的,所以UserInfoBean沒有CMR欄位。
Weblogic-cmp--jar.xml
LocalUserBean中的方法:
ejbCreate(String email,String pw,UserInfoValue user){
setEmail(email);
setPw(pw)
}
ejbPostCreate(String email,String pw,UserInfoValueObject user){
Context ctx=new InitialContext();
LocalRoleHome home=(LocalRoleHome)ctx.lookup(“LocalRole”);
home.create(user.getEmail,…………);
}
透過ejbPostCreate的方法,LocalRoleBean的本地介面,同時建立使用者資訊,UserInfoValueObject為自己定義的一個使用者資訊類,記住,這個類一定要實現java.io. Serializable,因為EJB中要求都可以序列化。
UserManage中的方法
添家使用者。新增LocalUser的同時,也新增了UserInfo
public void addUser(String email, String pw, UserInfoValueObject user) {
try{
LocalUser user=userHome.create(email, pw,user);
}catch(CreateException ce){
throw new EJBException("建立使用者"+email+"錯誤!",ce);
}
}
刪除使用者。刪除LocalUser的同時,也刪除了UserInfo
public void removeUser(String email){
try{
userHome.remove(email);
}catch(CreateException ce){
throw new EJBException("刪除使用者"+email+"錯誤!",ce);
}
}
校驗使用者密碼
public boolean verifyUser(String email, String pw) {
try{
LocalUser user = userHome.findByPrimaryKey(email);
return user.getPw().equals(pw);
}catch(FinderException fe){
throw new EJBException("校驗使用者"+email+"錯誤!",fe);
}
}
LocalUser----LocalRole的關係為many2many的雙相關係。
在開始編寫EJB CMP的時候,由於我對many2many的關係對映總是失敗,所以在專案當中我都避免出現many2many的關係,後來發現EJB中的關係其實就是實現了資料庫中的關係,所以對資料庫的基礎要了解的話,實現起來也不復雜。
LocalRoleBean: (CMP)
public abstract void setRolename(java.lang.String rolename);
public abstract void setDescription(java.lang.String description);
public abstract java.lang.String getRolename();
public abstract java.lang.String getDescription();
(CMR)
public abstract java.util.Collection getLocalUser();
public abstract void setLocalUser(java.util.Collection localUser);
在LocalUserBean中加,因為是many2many的關係,所以是Collection介面;
public abstract void setRoletab(java.util.Collection roletab);
public abstract java.util.Collection getRoletab();
Weblogic-cmp-rdbms-jar.xml
UserManage中實現的方法(略);
UserGroup----LocalUser是one2many的雙相關係;
(CMP)
public abstract void setName(java.lang.String name);
public abstract void setDescription(java.lang.String description);
public abstract java.lang.String getName();
public abstract java.lang.String getDescription();
(CMR)
public abstract java.util.Collection getLocalUser();
public abstract void setLocalUser(java.util.Collection localUser);
Weblogic-cmp-rdbms-jar.xml
總結:首先要對EJB CMP/CMR的實現原理充分了解,其次要了解資料庫原理中關係是如何定義的,這樣對於你實現關係的對映非常有好處,第三,就是要看別人的程式碼和例子,多看相關的介紹文章,多做例子。
由於本人的知識和水平有限,還請大家不吝指教和批評。
我的聯絡方式:.com">zceast@hotmail.com()
希望能和大家共同探討和學習
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-998692/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Jbuilder開發CMP/CMRUI
- Laravel 框架學習心得體會Laravel框架
- python學習心得體會(一)Python
- RabbitMQ學習心得體會之ExchangeMQ
- 學習“5S”管理心得體會
- java學習總結及心得體會Java
- 最佳化EJB實體Bean CMP和資料庫Bean資料庫
- 電腦學習心得 (轉)
- 心得體會
- 對軟體開發的一點心得體會 (轉)
- 學習ASP.NET的體會(一) (轉)ASP.NET
- 如何學習EJB
- EJB學習(一)——EJB和WEB打包Web
- github心得體會Github
- 我學習使用java的一點體會 (轉)Java
- 學習心得
- 最近學習的體會
- EJB學習筆記筆記
- 本人學習了ejb,
- CCNA學習心得之一(推薦)(轉)
- 我學習使用java的一點體會(2) (轉)Java
- 我學習使用java的一點體會(3) (轉)Java
- 學習專案管理理論後的體會(轉)專案管理
- 我學習使用java的一點體會(5) (轉)Java
- 我學習使用java的一點體會(4) (轉)Java
- 我學習使用java的一點體會(8) (轉)Java
- 學習專案管理理論後的體會 (轉)專案管理
- 專案進度控制學習體會(轉)
- 有沒有用EJB(CMP)實現動態查詢的方法?
- 學習kettle的小心得
- CSS的學習和心得CSS
- Redis 學習心得Redis
- Github學習心得Github
- Django學習心得Django
- git學習心得Git
- Lotus學習心得(-)
- php學習心得PHP
- Guice學習心得GUI