隨筆-54  評論-0  文章-2  trackbacks-0

                                   spring對事務的管理

             今天講了Spring的事務,及對hibernate的整合,對struts的整合。以后還得學習,記不住,用到再整理。

          1.事務的四大特點:

             atomic:要么都發生,要么都不發生。

             consistent:數據應該不被破壞。

             Isolated:用戶間操作不相混淆

             Durable:永久保存

          2.介紹spring的事務管理器

           spring沒有直接管理事務,而是將管理事務的責任委

           托給某個特定平臺的事務實現。

          3.Hibernate事務:

                 <bean id="transactionManager"

                       class="…HibernateTransactionManager">

                       <property name="sessionFactory" ref="sf" />

                 </bean>

          其中sessionFactory屬性必須和一個HibernateSessionFactory綁定

             HibernateTransactionManager把事務管理委托給一個從Hibernate

                 session 中取得的net.Transaction對象。當一個事務成功完成時,

                 HibernateTransactionManager將調用Transaction對象的commit()

                 方法。類似的,當一個事務失敗時,Transaction對象的rollback()

                 法將被調用。

          4.事務屬性

             1.隔離級別:設定事務的并發程度

                  臟讀:一個事務讀取了另一個事務改寫但還未

                         提交的數據,如果這些數據被回滾,則

                         讀到的數據是無效的。

                  不可重復讀:一個事務執行相同的查詢兩次或兩次以

                                上,但每次查詢結果都不同。

                  幻讀:一個事務讀取了幾行記錄后,另一個事務插入一

                         些記錄,幻讀就發生了。再后來的查詢中,第一

                         個事務就會發現有些原來沒有的記錄。

             2.只讀               若對數據庫只進行讀操作,可設置事務只讀的屬性,使用某些優化措施。數據庫會進行優化處理。若使用hibernate作為持久化機制,聲明一個只讀事務會使hibernateflush模式設置為FLUSH_NEVER。避免不必要的數據同步,將所有更新延遲到事務的結束。

             3.事務超時 若事務在長時間的運行,會不必要的占用數據庫資源。設置超時后,會在指定的時間片回滾。將那些具有可能啟動新事務的傳播行為的方法的事務設置超時才有意義

          5.CMT:容器管理事務

             BMTbean 管理事務

          <tx:annocation-driven transaction-manager="hibernateTransactionManager"/>

          類上加@Transactional

          6.總結:

          事務策略

          在業務中不能加try catch ,因為Spring的環繞通知在出現異常時會回滾事務,你已捕獲,就會提交事務(任何情況下)

          7.Spring整合Struts

           1.web服務器啟動時,完成Spring容器的實例化。plugin|listener

           2.struts中的action交給Spring容器管理。

           3.基本操作

           注意:在spring上下文中,作為普通bean配置action,action的不能用id,只能用name,

          因為需要struts-config.xml文件中actionpath一致.

          bean.xml

          <bean name="/loginAction" class="..LoginAction">

           <property name="xxxService" ref="xxxService" />

          </bean>

          posted on 2010-03-01 01:04 d66380022 閱讀(127) 評論(0)  編輯  收藏
          主站蜘蛛池模板: 梁山县| 杂多县| 台山市| 巴彦县| 扎鲁特旗| 张家界市| 保山市| 南皮县| 舒城县| 新兴县| 锡林浩特市| 松潘县| 平凉市| 玉龙| 徐水县| 西青区| 安平县| 岳普湖县| 贵德县| 兴文县| 永州市| 安义县| 泰来县| 曲阳县| 文山县| 奉化市| 宁蒗| 独山县| 依兰县| 夹江县| 饶河县| 宁远县| 洛川县| 黄浦区| 天津市| 固阳县| 日照市| 乐安县| 中方县| 绥宁县| 丹棱县|