亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

實體bean的承諾

2019-11-18 12:11:34
字體:
來源:轉載
供稿:網友

  我作為BEA的顧問,已經成功地幫助客戶在各種版本的WebLogic Server (WLS)上設計并部署了應用程序。BEA從EJB 1.0已經開始支持容器治理(CMP)的實體beans,并且已有一些客戶在使用它們??刹恍业氖?,一些客戶在不理解實體bean的情況下就使用上了它們;而另一些客戶一聽說它會對性能有某些約束,就完全從他們的結構/設計選擇上排除使用實體beans。
  
  當面對系統分析師的詢問"我究竟何時應該考慮去使用CMP方式的實體beans呢?"的時候,我很難解釋為什么要使用CMP形式的實體beans。實體beans的優勢體現在兩方面:高速緩存和對象-關系的映射。兩者在先前的版本中都勉強的被實現,但EJB 2.0拯救了這種情況。WLS 7.0在EJB 2.0規范上的附加功能彌補了在使用實體beans和使用無狀態會話beans之間在性能方面的差距,說明:無狀態會話bean是通過DAO和JDBC訪問數據庫的,在某些情況下實體bean甚至比無狀態會話bean執行的快。當使用JDBC時,強烈建議開發者使用容器治理的事務。
  
  早期版本的問題
  
  一些在過去使用實體beans的客戶不得不重新設計和使用JDBC,因為他們的系統太慢以至于無法滿足服務。緩慢的原因在于:
  
  
  沒有高速緩存: 每個事務為了加載實體bean都訪問數據庫。客戶在使用實體bean時所期望的承諾之一是緩存,而對規則實體beans來說在集群環境中是沒有緩存可以使用的。
  
  單一表支持 (O-R 映射過分簡單化): 客戶也期望對象-關系映射可以由實體bean完成,但是由容器提供映射功能過分簡單了。
  
  每個虛擬機(VM)只能有該實體bean的單一實例:由于WebLogic 5.1和更低的版本只支持互斥鎖,所有對實體bean的調用都是串行化的,這樣會引起系統瓶頸甚至是對只讀beans。
  
  互斥鎖 :當一些beans在使用事件而另一些沒使用的時候,死鎖發生的可能性很高。
  
  單一setX調用:這引起整個實體bean都被寫進數據庫。在EJB 2.0 規范前,容器對于判定哪些內容發生了改變哪些沒有發生改變是沒有辦法的,這意味著在ejbStore時,所有的屬性都要更新。
  
  裝載 :裝載實體bean,使所有的數據成員都裝進內存,只需要幾個的時候。
  
  無動態查詢 :寫了一個新的查詢時,EJB必須被重新部署。
  
  查詢 :查詢會實例化大量的實體beans,消耗內存并且降低系統性能。
  
  WLS 7.0的特征
  
  WLS 7.0 實現了在EJB 2.0中提供的豐富的對象-關系映射規范。在優化讀寫數據庫方面EJB 2.0也為容器提供了更豐富的便利。下面說明了開發者在WLS 7.0 中設計實體beans方面所擁有的豐富和靈活的特征。
  
  
  容器治理的關系 :實體beans可以關聯其他的beans;這些關系可以是雙向的或是單向的。WLS支持三種類型的關系映射,由WebLogic CMP治理:一對一,一對多,多對多。
  
  一個實體bean的多表映射:多表的支持答應一個符合EJB 2.0特征的CMP beans的實現器將一個EJB 映射為一個據庫中的多DBMS表。
  
  調優EJB2.0的寫操作:當調用ejbStore時只更新寫進數據庫的字段,而不是把所有字段都寫進數據庫。
  
  使用字段組調優讀操作:在ejbLoad容器,只裝載field-group中的字段,而不是裝載實體bean的所有字段。
  
  關系的緩存: 這個特征提高實體bean的性能,通過在某一個聯合查詢(非多重條件查詢)中緩存并裝載相關的beans。
  
  實體beans可以返回ResultSets(記錄集):WLS 支持ejbSelect()查詢,它在java.sql.ResultSet的表單中返回多列的查詢結果。
  
  對不同種類的實體beans的應用級的緩存: 代替對每個實體bean分散的緩存,這個特征可以使多個實體beans 在一個EAR中共享一個單一運行時的緩存。
  
  動態查詢: EJB 2.0規范強制用戶在部署描述符中編寫查詢代碼。通過采用動態查詢,新的查詢可以通過程序被構造和執行而不用重新部署beans。
  
  Read-mostly設計模式:在現實世界中,大部分應用程序的90% 為讀取而10%為更新。實體bean可以被寫成模擬數據并且可以部署為只讀實體bean和規范的實體bean。通過這種方法,想要讀取數據的用戶與只讀實體bean交互,而想要修改數據的用戶與規則的實體bean交互。當修改發生時,容器使所有的只讀實體bean失效,當數據訪問再次發生時迫使容器調用ejbLoad。
  
  其他有用的特征包括:自動生成主鍵,支持級聯刪除,支持EJB QL(Query Language,查詢語言),ejbSelect方法,以及下面所描述的并行策略。
  
  并行策略
  
  并行策略定義一個實體bean創建多少實例,為了維持事務的完整性誰來實現同步以及在實體bean中的數據模型存取模式。恰當的并行策略可以使實體bean在性能上產生極大的不同。
  
  
  互斥性:對于每個VM實體bean容器只產生一個實例,所有實體bean的調用都作為使用容器鎖的實體bean來串行化。這絕不被推薦使用。
  
  數據庫:容器延期對數據庫的鎖定,并且每個事務都有它自己實體bean的拷貝。ejbLoad 和 ejbStore 在各自事務的開始和結束時被調用。
  
  只讀實體beans: 數據庫和容器都不支持任何的鎖,每個事務得到它自己的實體bean的拷貝。一個叫做的可配置參數用于控制實體bean調用ejbLoad方法。EjbStore在實體bean上永遠不會被調用。客戶端仍然可以在實體bean上進行創建,移除和更新操作。創建和移除操作會成功,而由于不調用ejbStore,更新操作將不會修改數據庫。在只讀實體bean上不調用CUD(create, update, delete)方法是程序員的責任。只讀實體bean對于"分布式緩存"問題是最好的解決方法。
  
  開放式的實體beans :容器延期對數據庫的鎖定,但是該鎖在事務期間不予以保留。其基本思想是容器在提交前檢查修改了的數據并且假如其他人也修改了數據時,將該操作回滾。假如你想有比TX_READ_COMMITTED更高的一致性,而不需要達到TX_ SERIALIZABLE那么高的一致性時這樣做是很有用的。假如你能忍受短時間讀取陳舊的數據,而又想完成一些update操作的事務完整性時,你可以使用它。這里有四個選項可用于檢查optimistic式沖突:
  1. 檢查讀取的列
  2. 檢查修改的列
  3. 檢查時間信息列
  4. 檢查版本信息列
  
  選項3和4是不被推薦的,因為為適應這個并行策略,表的結構需要改變。
  同樣,對于開放式并行策略,你可以配置在事務為true和false期間你是否需要緩存。對在事務期間設置為false的緩存,將在每個事務開始的時候調用ejbLoad。
  
  比較
  
  對于CMP,總要有附加處理過程的,這是由于在EJB容器以及容器層上(合成碼)有一個集成,該容器層用于處理事務、安全、池態、生命周期治理、failover、緩存和關系。這里。CMP(由設計或由規范)必須做一些內部操作(ejbLoad, ejbStore, ejbActivate, ejbPassivate)就像反對JDBC邏輯而由開發者自己手寫編程。容器基礎結構的好處是優化并生成數據庫訪問;加速開發以及簡化代碼維護。
  在我見過的基準上,除非數據是被緩存了的, [stateless session bean + DAO (做 JDBC訪問)] 執行比實體bean執行快30-50%。
  
  什么時候使用什么
  
  實體bean不能用來取代編寫JDBC。假如你的對象-關系模型不是極度復雜(包括許多連接,等等)和靈活并且對于工程代碼的維護比速度更重要時可以使用實體beans。
  使用JDBC于簡單的,原子級別綁定的更新;使存儲過程和觸發器相結合;并處理大量的ResultSets(記錄集)。
  WebLogic附加的功能例如read-mostly設計模式和開放式緩存cache-between-transactions設置成true是兩種設計選擇,它使實體beans成為吸引人的選擇。它們都是BEA所特有的屬性,在WebLogic非凡部署描述符中指定的。當轉移到另一個適用J2EE的應用服務器上時無需代碼變更。對于應用來說通過使用開放式緩存并行策略可以在短時間讀取舊的數據。
  對于大多數在讀取而少數時候更新的用例,使用read-mostly設計模式。這種設計模式也有缺點,就是用戶會讀取到過時的數據。對于一些用戶完全不應讀取過時的數據的情況,他們可以從讀寫bean讀取。
  CMP實體beans的只讀實體beans的特征將在以后發布的EJB規范版本中有所提及。使用只讀實體beans來實現一個可以周期性更新的分布式緩存。
  
  結論
  
  現實世界中大多數的應用程序的讀操作比寫操作多很多。現實中read-mostly模式對兩種情況來說都將是最好的方法。它提供簡單的開發和靈活的部署,并且對于存取數據提供卓越的性能特性,只有當數據被修改時才會有的額外開銷。cache-between-transactions設置成true的開放式的并行可以比JDBC還快。編寫最優化的SQL對于正規的Java程序員來說很難,所以不要忽略實體beans的價值并決定它們是否最適合。
  
  實體Beans的例子
  
  提供的示例在BEA-HOME/samples/server/src/ejb20子目錄下。
  
  
  論證關系的示例參看BEA-HOME/samples/ server/src/ejb20/relationships/bands目錄。
  
  論證多表映射的例子參看BEA-HOME/ samples/server/src/ejb20/multitable 目錄。
  
  使用數據庫并行選項在weblogic-ejb-jar.xml中指明Database
  
  使用只讀并行選項在weblogic-ejb-jar.xml中指明Read-only
  
  使用開放式并行cache-between-transactions并且檢查改進的選項在weblogic-ejb- jar.xml中指明Optimistic True并且在weblogic-cmp-rdbms -jar.xml中指明Modified。
  實現"read-mostly"設計模式注冊bean的實現就像兩個EJBs,一個作為只讀另一個作為可讀寫的,并且在weblogic-ejb -jar.xml中ejbname是只讀實體bean名字處添加ejbname 。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲美女中文字幕| 亚洲欧美综合v| 91中文字幕在线| 国产视频在线一区二区| 亚洲精品一区二区三区不| 久久精品国产欧美激情| 亚洲精品视频免费在线观看| 国产suv精品一区二区| 日韩在线观看免费全| 国产精品激情av电影在线观看| 久久国产精品久久久久久| 91亚洲永久免费精品| 欧美性xxxx| 久久精品免费播放| 日韩av不卡电影| 成人妇女免费播放久久久| 俺去亚洲欧洲欧美日韩| 另类美女黄大片| 欧美特黄级在线| 国产精品aaaa| 97在线视频免费观看| 91在线无精精品一区二区| 欧美性猛交xxxx免费看久久久| 欧美一级淫片aaaaaaa视频| 亚洲a∨日韩av高清在线观看| 国产精品免费看久久久香蕉| 国产精品视频色| 亚洲第一福利网| 日韩一区二区三区在线播放| 一本色道久久综合狠狠躁篇怎么玩| 裸体女人亚洲精品一区| 成人黄色免费网站在线观看| 亚洲视频在线观看| 亚洲韩国欧洲国产日产av| 日韩电影在线观看免费| 欧美一级片久久久久久久| 欧美肥臀大乳一区二区免费视频| 亚洲精品大尺度| 亚洲a在线观看| 久久香蕉国产线看观看av| 国产精品中文久久久久久久| 国产三级精品网站| 亚洲人成欧美中文字幕| 国产精品久久久久久久久久久久久久| 亚洲欧美日韩精品久久| 九九久久综合网站| 日韩av网址在线| 国产精品视频久| 欧美精品在线视频观看| 久久露脸国产精品| 久久久av免费| 97久久久免费福利网址| 国产成人av在线| 97在线看免费观看视频在线观看| 欧美午夜丰满在线18影院| 欧美电影免费播放| 亚洲国产精品系列| 成人午夜一级二级三级| 欧美在线视频一区二区| 668精品在线视频| 欧美日韩综合视频| 国产精品一区二区三区久久| 亚洲精品久久久久| 久久99热精品这里久久精品| 久久国产视频网站| 亚洲色图偷窥自拍| 欧洲精品毛片网站| 中文字幕亚洲欧美日韩高清| 亚洲精品综合精品自拍| 亚洲成人黄色在线观看| 久久理论片午夜琪琪电影网| 亚洲天堂色网站| 日韩电影免费在线观看中文字幕| 欧美综合在线观看| 国内精品久久久久影院优| 91欧美精品成人综合在线观看| 91免费看国产| 欧美日韩国产成人高清视频| 日韩中文在线中文网三级| 久久精品99久久久久久久久| 成人免费xxxxx在线观看| 欧美裸体xxxx极品少妇| 国外成人在线视频| 亚洲国产精品电影在线观看| 国内精品小视频在线观看| 日韩国产精品亚洲а∨天堂免| 日本精品久久电影| www.欧美精品一二三区| 欧美极品在线播放| 97视频在线观看亚洲| 久久亚洲精品中文字幕冲田杏梨| 国产精品视频在线播放| 亚洲精品小视频| 欧美电影在线免费观看网站| 亚洲国产第一页| 91精品国产色综合久久不卡98口| 国产a∨精品一区二区三区不卡| 精品久久久久久久久国产字幕| 青草热久免费精品视频| 久久久999成人| 久久高清视频免费| 亚洲人成网站免费播放| 一区二区三区四区视频| 欧美精品中文字幕一区| 久久久久久久久久久成人| 日韩久久午夜影院| 色99之美女主播在线视频| 国产在线观看不卡| 精品久久久久久中文字幕大豆网| 亚洲人成在线观看| 91精品啪在线观看麻豆免费| 蜜臀久久99精品久久久久久宅男| 欧美日韩美女视频| 日本久久精品视频| 国产激情视频一区| 久久久亚洲成人| 日韩专区在线观看| 中文字幕自拍vr一区二区三区| 欧美激情视频在线| 在线精品国产欧美| 亚洲国产精久久久久久| 久久精品人人爽| 国产精品免费久久久| 成人在线精品视频| 日韩成人免费视频| 大桥未久av一区二区三区| 91精品视频播放| 欧美怡春院一区二区三区| 日韩视频免费看| 亚洲欧美日韩精品久久奇米色影视| 青青久久av北条麻妃黑人| 欧美在线视频导航| 九九热在线精品视频| 亚洲免费av电影| 亚洲有声小说3d| 日韩av成人在线观看| 久久久久久高潮国产精品视| 在线观看免费高清视频97| 97国产suv精品一区二区62| 亚洲性线免费观看视频成熟| 精品福利在线看| 日本伊人精品一区二区三区介绍| 日韩精品免费在线观看| 亚洲www永久成人夜色| 热久久这里只有精品| 亚洲天堂网在线观看| 亚洲国产天堂网精品网站| 国产精品免费网站| 欧美亚洲第一页| 亚洲新中文字幕| 91久久精品国产91久久| 国产精品免费看久久久香蕉| 久久香蕉精品香蕉| 亚洲аv电影天堂网| 国产精品r级在线| 日韩电影免费在线观看中文字幕| 2020久久国产精品| 欧美老女人xx| 欧美乱妇40p| 富二代精品短视频| 日韩成人在线网站| 亚洲欧美日韩区| 久久久午夜视频| 清纯唯美日韩制服另类|