<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 閱讀(412) 評論(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)點(diǎn):把事務(wù)管理從Java代碼中挪到了EJB部署描述符中。因此事務(wù)編程了一個(gè)無需硬編碼的橫切面。
    缺點(diǎn):
    1、只有EJB才能夠使用聲明式事務(wù)管理
    2、聲明式事務(wù)實(shí)際上也符合80-20原則
    3、EJB CMT必須使用全局事務(wù)管理,如果僅需要單事務(wù)的資源,大材小用。

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

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

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

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

    Persistence -- 持久化

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

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

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

    細(xì)粒度的領(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模式需要一個(gè)DAO接口,以便將特定的數(shù)據(jù)訪問實(shí)現(xiàn)細(xì)節(jié)隱藏起來。

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

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

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

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

    Copyright © JDeodar

    主站蜘蛛池模板: 一级做α爱过程免费视频| 久久精品网站免费观看 | 亚洲国产精品VA在线看黑人| 国产亚洲精品2021自在线| 永久在线观看免费视频| 日韩欧美一区二区三区免费观看| 伊人久久亚洲综合影院| 看一级毛片免费观看视频| 免费jjzz在在线播放国产| 免费一级全黄少妇性色生活片 | 91人成网站色www免费下载| 亚洲AV永久纯肉无码精品动漫| 亚洲av午夜电影在线观看| 国产hs免费高清在线观看| 深夜福利在线视频免费| 日韩视频在线精品视频免费观看| 亚洲午夜激情视频| 亚洲а∨天堂久久精品9966| 永久免费av无码入口国语片| 国产一级淫片a视频免费观看| 亚洲免费视频观看| 日韩免费毛片视频| 国产vA免费精品高清在线观看| 免费无遮挡无码视频网站| 日韩在线视频播放免费视频完整版| 最近中文字幕mv手机免费高清| 久久99国产亚洲高清观看首页| 国产成人高清亚洲一区久久| 久久久久亚洲精品男人的天堂| 亚洲a∨无码一区二区| 国产成人麻豆亚洲综合无码精品| 亚洲精品中文字幕无码A片老| 亚洲毛片免费视频| 国产AV无码专区亚洲AV麻豆丫| 无码人妻一区二区三区免费| 老司机福利在线免费观看| 亚洲精品无码mv在线观看网站| 国产精品玖玖美女张开腿让男人桶爽免费看| 成年女人毛片免费视频| GOGOGO高清免费看韩国| 亚洲人成网站在线观看播放动漫 |