<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    讀《J2EE Development without EJB》 筆記五

    Posted on 2006-01-13 22:24 JDeodar 閱讀(415) 評論(0)  編輯  收藏 所屬分類: J2EE
    Tansation Management -- 事務(wù)管理

    應(yīng)用程序可以用于以下兩種手段來管理容器事務(wù),從而控制應(yīng)用服務(wù)器的事務(wù)管理服務(wù)
    1、編程式事務(wù)管理:使用JTA UserTransaction對象,通過JNDI獲取
    2、聲明式事務(wù)管理:通過使用組建模型(即EJB CMT),這是一種建立在JTA基礎(chǔ)設(shè)施之上的高層的服務(wù)
    這兩種方法通常都被命名為“受控的事務(wù)”(EJB CMT)。

    容器管理事務(wù)(Container-Managed Transaction)
    優(yōu)點:把事務(wù)管理從Java代碼中挪到了EJB部署描述符中。因此事務(wù)編程了一個無需硬編碼的橫切面。
    缺點:
    1、只有EJB才能夠使用聲明式事務(wù)管理
    2、聲明式事務(wù)實際上也符合80-20原則
    3、EJB CMT必須使用全局事務(wù)管理,如果僅需要單事務(wù)的資源,大材小用。

    Spring的聲明式事務(wù)管理建立在Spring的AOP框架之上,所以Spring的事務(wù)管理需要帶有AOP功能的Spring Bean工廠。
    事物的傳播類型:(6種)
    1、“required”運行在當前的事務(wù)范圍內(nèi),如果當前沒有啟動事務(wù),那么創(chuàng)建一個新的事物
    2、“supports”運行在當前的事務(wù)范圍內(nèi),如果當前沒有啟動事務(wù),那么就不在事務(wù)范圍內(nèi)執(zhí)行
    3、“mandatory”運行在當前的事務(wù)范圍內(nèi),如果當前沒有啟動事務(wù),那么拋出異常
    4、“requires new”創(chuàng)建一個新的事務(wù),如果當前啟動了事務(wù),那么掛起當前事務(wù)
    5、“not supported”不在事務(wù)范圍內(nèi)執(zhí)行,如果當前啟動了事務(wù),那么掛起當前事務(wù)
    6、“never”不在事務(wù)范圍內(nèi)執(zhí)行,如果當前啟動了事物,那么拋出異常
    默認的事務(wù)類型是“required”,適用于絕大多數(shù)的情況。

    編程式事務(wù)管理通常有以下兩種使用方式:一是通常的使用方式,在一個catch代碼塊中對任何異常進行回滾處理;二是通過一個“控制反轉(zhuǎn)(IoC)”模版類和一個回調(diào)實現(xiàn)。
    事物管理最適合使用AOP。

    Spring的事務(wù)處理最重要的好處是,在不需要任何部署步驟和特定的需要的情況下,可以讓POJO具備事務(wù)處理能力。

    YAGNI(You Arent Gonna Need It,不要為不必要的需求埋單)

    Persistence -- 持久化

    Patterns of Enterprise Application Architecture(2002 Martin Fowler),常簡稱POEAA -- 一定要讀

    處理批量存取和批量更新時,O/R映射會有問題,不知道什么時候才能解決優(yōu)化呢?

    下面的征兆,可以考慮使用O/R映射:
    1、針對領(lǐng)域?qū)ο蟮摹凹虞d/編輯/存儲”流程,例如先加載一條產(chǎn)品記錄,對其進行修改,然后更新會數(shù)據(jù)庫。
    2、對象以批量查詢的方式取出,但更新和刪除則是單獨進行。
    3、大量對象需要積極地緩存(通常出現(xiàn)在“讀操作遠多于寫操作”的情況下,如web應(yīng)用。)
    4、在領(lǐng)域?qū)ο笈c數(shù)據(jù)庫表/字段之間有一個相當自然的對應(yīng)關(guān)系。
    5、不需要對SQL進行特別的優(yōu)化。

    細粒度的領(lǐng)域模型不應(yīng)該用重量級的EJB組件來建模,而應(yīng)該用簡單的Java對象——POJO(Plain Old Java Object)——來建模。
    所有的持久化技術(shù)必然會涉及對資源的管理:
    1、連接工廠
    2、連接

    DAO模式的用途是將“與持久化相關(guān)的代碼”從業(yè)務(wù)邏輯中分離出來,換句話說,把業(yè)務(wù)流程和規(guī)則放在一邊,與持久化相關(guān)的問題放在另一邊。DAO模式需要一個DAO接口,以便將特定的數(shù)據(jù)訪問實現(xiàn)細節(jié)隱藏起來。

    使用Spring框架進行數(shù)據(jù)訪問
    1、Spring的bean工廠和應(yīng)用上下文容器使得應(yīng)用程序中的各種對象能夠輕松地裝配起來。
    2、Spring有一個清晰的事務(wù)模型
    3、Spring提供了一個通用的數(shù)據(jù)庫訪問異常體系。
    4、對于各種持久化方式,Spring用形式統(tǒng)一的模版機制解決了關(guān)閉連接、處理異常等問題。

    JdbcTemplate實例(以及別的Spring模版)都是線程安全的,允許多線程復(fù)用。因此只需要在DAO初始化將一個JdbcTemplate實例提供給它,所有的DAO方法都可以使用這同一個模版實例,不必擔心任何同步問題。

    Spring框架提供了另一個層次較高的JDBC抽象:可詢操作、更新操作或是存儲過程。

    posts - 10, comments - 2, trackbacks - 0, articles - 0

    Copyright © JDeodar

    主站蜘蛛池模板: 亚洲国产成人VA在线观看| 曰批视频免费30分钟成人| 四虎影在线永久免费四虎地址8848aa| 亚洲成a人片7777| 2021国内精品久久久久精免费| 亚洲AV日韩精品久久久久| 免费国产污网站在线观看| 亚洲va中文字幕无码久久不卡| 免费一区二区无码东京热| 人人狠狠综合久久亚洲88| 成全视频免费观看在线看| 亚洲第一中文字幕| 在线日本高清免费不卡| 亚洲精品456人成在线| 在线看片人成视频免费无遮挡| 蜜臀亚洲AV无码精品国产午夜.| 国产一区二区三区在线免费| jyzzjyzz国产免费观看| 亚洲AV人无码激艳猛片| 在线看片v免费观看视频777| 亚洲成av人片在线天堂无| 亚洲精品国产V片在线观看 | 国产日产成人免费视频在线观看| 亚洲国产AV无码一区二区三区| 性做久久久久免费观看| 中文字幕版免费电影网站| 久久久久亚洲精品无码蜜桃| 成人性生交大片免费看无遮挡| 亚洲av无码专区亚洲av不卡| 国产亚洲人成A在线V网站| 最近中文字幕mv免费高清视频8 | 中文字幕免费在线视频| 2022年亚洲午夜一区二区福利 | 亚洲爆乳成av人在线视菜奈实| 中文字幕亚洲激情| 日本人的色道免费网站| 色屁屁在线观看视频免费| 亚洲欧洲第一a在线观看| 日韩一区二区在线免费观看| 99精品免费视品| 亚洲精品9999久久久久无码|