實體Bean的BMP和CMP選擇

2021-08-29 22:14:11 字數 685 閱讀 9384

ejb有兩種主要型別bmp(bean managed persistence )和cmp(container managed persistence ),這兩種型別各有優缺點。

bmp是在bean中完成對資料庫jdbc的各種呼叫,也就是說,在你的實體bean(entity bean)中,明確寫入了sql語句,如"insert .. "或"select ..",並且使用datasource獲得乙個資料庫資源以及連線(connection)從而對資料庫直接進行增加 刪除修改。

cmp是由ejb容器自動完成對資料庫的操作,你所有做的,就是在實體bean重寫入set***或get***方法,然後在ejb-jar.xml中定義cmp-field就可以。

很明顯,cmp編寫要簡單多,而且資料庫操作由ejb容器完成應該是一種趨勢,但是cmp有個缺點就是不夠靈活,如果我們要完成類似sql搜尋語句的like命令,如"select * from a where name like '%banqiao'",cmp就無法自動幫助我們完成,這樣我們就需要bmp自己來寫。

在實際應用,一般為了效率考慮,我們盡量使用cmp,但如何為將來有可能使用bmp作好準備,就是說有可以延伸到bmp的基礎。ejb 2.0對cmp的抽象類支援為我們提供了這種實現的基礎。

總體思路是,先使用抽象類完成cmp 如果需要bmp 可以extend這個抽象類,然後覆蓋原來的方法(用自己的特殊sql語句操作來覆蓋該方法)。

ejb的事務與實體bean

應該使用宣告方式控制事務還是使用程式設計方式控制事務?事務與實體bean 事務型別bean container bean container 首先不要誤解事務和實體bean的關係。ejb元件有兩種劃分事務邊界的方法 程式設計型和宣告型。程式設計型事務 大多數現有的系統都是用程式設計型來劃分事務邊界。...

J2EE中 實體BEAN和會話BEAN的區別

乙個session bean 代表與客戶程式的乙個短暫的會話,而且可能執行資料庫讀寫操作。乙個session bean 可能會自己呼叫jdbc 或者它可能使用entity bean 來完成此種呼叫。在後者這種情況下,這個session bean 是該entity bean 的客戶。乙個session...

超快速編寫ejb3 0的實體bean

相信很多同學 特別是新手朋友 編寫實體bean的時候感到繁瑣 特別是是表的元素比較多的時候,要寫比較多的對映的屬性。雖然在eclipse中有alt s,然後按 generate getters and setters可以快速的寫這些屬性的get和set的方法,但是ejb3.0的各種各樣注釋 特別涉及...