日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php框架 > 框架設計 > [置頂] 會話EJB系列(四)SessionBean事務管理

[置頂] 會話EJB系列(四)SessionBean事務管理

來源:程序員人生   發布時間:2015-01-17 09:33:46 閱讀次數:3279次

(上1篇文章中我們介紹了《會話EJB系列(3)SessionBean生命周期》,本為的主要介紹SessionBean中事務管理)

 

SessionBean從功能上可以分為兩類:

        第1類:成為EAO:用于封裝底層的實體和JPA,本質上其功能就是DAO。(不需要事務控制。由于JPA本質是對ORM實現的封裝。)

        第2類:充當業務組件:是底層EAO對象的Facade,系統控制器(如struts中的Action,springMVC中的Controller)將調用他們的業務方法來處理用戶要求。(需要添加事務控制。由于它代表了1次完全的業務邏輯)

  

        EJB的事務管理機制依然是建立在JTA事務基礎之上,因此利用服務器會負責處理事務管理的底層細節。

        EJB3中仍提供容器管理事務(CMT)和Bean管理事務(BMT)兩種,并允許采取Annotation機制來指定事務屬性,替換了EJB2中的XML配置文件方式。

 

        對CMT:容器負責決定事務的邊界:方法開始就是事務開始,方法結束就是事務結束。

        對BMT:事務邊界由開發人員靈活決定(事務開始、事務回滾、事務結束)

 

1.容器管理事務

       CMT:容器負責決定事務的邊界:方法開始就是事務開始,方法結束就是事務結束。

 

(1)Annotation控制事務方式

        SessionBean的事務管理機制與MDB的事務管理方式完全1樣,都是通過在Bean上使用@TransactionManagement、        @TransactionAttribute兩個Annotation來控制的。無需對該接口代碼進行任何改變。

        1) @TransactionManagement,value屬性設置事務處理方式:CMT?還是BMT?,如:

                TransactionManagementType.BEAN:指定使用BMT管理事務

                TransactionManagementType.CONTAINER:指定使用CMT管理事務

 

        2)@TransactionAttribute,既可以用于修飾SessionBean或MDB 的Bean實現類,也用于修飾某個業務方法(優先),

                 并通過value值,設置事務屬性為枚舉類型之1:

 

(2)捕獲‘自定義異常’

          默許,產生系統異常,CMT會控制事務回滾;若為自定義異常,不會回滾。

         但可以,手工控制‘自定義異常’回滾,方式以下:

                  第1種:使用EJBContext的setRollbackOnly(),顯示控制代碼回滾

                  第2種:使用@ApplicationException Annotation,指定rollback屬性為true便可

 

 (3)注意

        CMT意味著容器管理EJB業務方法中的事務,因此開發者不應當在開發時,調用任何開始、結束事務的方法

 

2.Bean管理

       對BMT:事務邊界由開發人員靈活決定(事務開始、事務回滾、事務結束),主要通過UserTransaction來控制事務。本質,就是通過編程操作JTA事務管理器。

(1)EJB的Bean類中獲得UserTransaction對象的,3種方式:

                第1種:使用@Resource Annotation履行依賴注入

                第2種:通過JNDI查找獲得,如:UserTransaction  ut=(UserTransaction)ctx.lookup("UserTransaction");

                第3種:使用EJBContext的getUserTransaction()方法獲得,如:UserTransaction ut=ctx.getUserTransaction();

 

(2)UserTransaction 中所含方法簡單解析 (略)      

        

3.對照CMT和BMT

(1)特點

        CMT(默許):容器負責決定事務的邊界:方法開始就是事務開始,方法結束就是事務結束。

        BMT:事務邊界由開發人員靈活決定(事務開始、事務回滾、事務結束)  。本質,通過編程操作JTA事務管理器。

        通常,EJB容器建議使用CMT事務管理。

(2)優缺點

        BMT優點:更靈活!開發者自行決定事務邊界

        BMT缺點:

              1.由于開發者采取硬編碼方式來實現事務管理,不可避免的致使業務邏輯和是無邏輯混淆的缺點,切難于切換其它管理方式。

              2. 客戶端調用BMT方法時,會暫停當前已有事務,就制約了組件的復用

 

(3)BMT有兩種必須存在的場景,和對應的爭議:

        1)開發者需要為業務方法中某段代碼添加事務。(為什么不將這段代碼抽離?封裝成1個方法?)

        2)有狀態SessionBean需要跨方法調用保護事務,也就是需要將多個方法放在1個事務中進行保護。(顯示多個方法組成了1個完全的業務邏輯,為什么不將它們整體封裝成1個業務方法)

 

 4.總結

        SessionBean中事務管理,分為兩種:容器管理事務(CMT)和Bean管理事務(BMT)

            CMT(默許):容器負責決定事務的邊界:方法開始就是事務開始,方法結束就是事務結束。

            BMT:事務邊界由開發人員靈活決定(事務開始、事務回滾、事務結束)  。本質,通過編程操作JTA事務管理器。

        具體情況具體操作...

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 成人午夜电影在线观看 | 国产成人精品久久二区二区 | 激情视频网站 | 国产在线激情 | 免费精品国产 | 黄色高清视频 | 精品国产一区二区三区免费 | 亚洲精品国产综合区久久久久久久 | 成人高清在线视频 | av资源网在线观看 | 欧美一区 | 91电影在线观看 | 久久成人一区二区 | 亚洲性激情 | 国产精品区一区二区三区 | 国产精品视频久久 | 色婷婷综合成人 | 欧美日韩二区三区 | 91av观看| 欧美中文在线 | 精品国产欧美 | 亚洲福利电影 | 中文字幕三级 | 成人毛片视频免费 | 一区二区视频 | 亚洲高清免费 | 亚洲精品黄色 | 国产一区二区免费 | 国产精品久久久久久久久久久久久久 | 在线精品亚洲欧美日韩国产 | 高清一区二区 | aa级黄色毛片 | 亚洲在线一区二区三区 | 亚洲午夜精品在线 | av大片在线| 欧美精品成人一区二区在线观看 | 日韩在线播放av | 国产一级片在线 | 日日躁夜夜躁 | 国产精品久久久久久久久久99 | 黄色一级大片在线免费看产 |