軟件藝術思考者  
          混沌,彷徨,立志,蓄勢...
          公告
          日歷
          <2025年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          導航

          隨筆分類(86)

          隨筆檔案(85)

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

           
          本文的理解來自實際應用程序。文件名是:applicationContext-hibernate1.xml
          熟悉spring-hibernate架構的人對它肯定不陌生。它是由支持spring的組件在編程開始自動生成的,但我們不能總是停留在不管不問的狀態。否則對程序構造就沒有更深一步的理解。
          如果理清applicationContext-hibernate1.xml的頭緒或者手工寫它,對于主動改進程序肯定是有益的。
          我總結出來的順序是:
          1.建myDataSource
          (org.apache.commons.dbcp.BasicDataSource).屬性包括DBDriver,URL,UserName,Password.
          2.mySessionFactory:
          (org.springframework.orm.hibernate.LocalSessionFactoryBean)屬性包括:mappingResources(hbm.xml的集合),HibernateProperties,myDataSource(注入1).
          3.myTransactionManager
          (org.springframework.orm.hibernate.HibernateTransactionManager)mySessionFactory(注入2)
          以上三步是后面各項配置的基礎。從后面開始我們就開始真正的配置我們的Beans了。
          4.boDAO
          (com.realnews.yourProject.service.dao.hibernate.boDAOs)注入mySessionFactory.
          5.boTarget
          (com.realnews.yourProject.service.spring.boServices)?注入boDAO
          6.boService
          (org.springframework.transaction.interceptor.TransactionProxyFactoryBean)注入myTransactionManager及boTarget
          ,并用transactionAttributes設置數據庫并發控制級別。例如
          <property name="transactionAttributes">
          ???<props>
          ????<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
          ????<prop key="save*">PROPAGATION_REQUIRED</prop>
          ???</props>
          7.循環第4到第6步即可配置所有需要配置的bean.
          本文不是摘抄,如果想轉摘,請注明出處:www.aygfsteel.com/zhanglijun33
          如果想要更詳細的資料可以給我留言。
          posted on 2006-07-06 11:29 智者無疆 閱讀(851) 評論(3)  編輯  收藏 所屬分類: about spring
          評論:
          • # re: Spring 應用程序配置文件的核心理解  白白 Posted @ 2006-07-06 11:44
            寫的好啊,支持支持強烈支持!好樣的。  回復  更多評論   

          • # re: Spring 應用程序配置文件的核心理解  智者無疆 Posted @ 2006-07-06 16:04
            注:property里面的name好像都是固定的,因為我改過,但xml解析器報錯。還沒有想透其中的原因,如果哪位高手明白,請多多指教  回復  更多評論   

          • # Spring 應用程序配置文件-struts配置  zhanglijun Posted @ 2008-03-01 11:45

            Spring配置事務在DAO層和業務邏輯層
            Spring配置事務在DAO層和Service層

            Spring通過AOP實現聲明式事務管理。通常通過TransactionProxyFactoryBean設置Spring事務代理。我們需要一個目標對象包裝在事務代理中。這個目標對象一般是一個普通Java對象的bean。當我們定義TransactionProxyFactoryBean時,必須提供一個相關的 PlatformTransactionManager的引用和事務屬性。 事務屬性含有上面描述的事務定義。

            PlatformTransactionManager:

            HibernateTransactionManager需要一個SessionFactory的引用

            JtaTransactionManager

            一.把事務放置在了DAO層:

            <!—hibernateTransactionManager-->

            <bean id="transactionManager"

            class="org.springframework.orm.hibernate3.HibernateTransactionManager">

            <property name="sessionFactory">

            <ref local="sessionFactory" />

            </property>

            </bean>

            <!—DAO層接口實現-->

            <bean id="companyDAOTarget"

            class="com.vstsoft.querycompany.dao.impl.CompanyDAOImpl">

            <property name="sessionFactory">

            <ref local="sessionFactory" />

            </property>

            </bean>

            <!—spring對DAO層的事務代理-->

            <bean id="companyDAOProxy"

            class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">

            <property name="transactionManager">

            <ref bean="transactionManager" />

            </property>

            <property name="target">

            <ref local="companyDAOTarget" />

            </property>

            <property name="transactionAttributes">

            <props>

            <prop key="insert*">PROPAGATION_REQUIRED</prop>

            <prop key="delete*">PROPAGATION_REQUIRED</prop>

            <prop key="find*">

            PROPAGATION_REQUIRED,readOnly

            </prop>

            </props>

            </property>

            </bean>

            <!—業務層接口實現,把DAO注入到Service里面-->

            <bean name="companyManageTarget"

            class="com.vstsoft.querycompany.service.impl.CompanyManageTarget">

            <property name="companyDAO">

            <ref bean="companyDAOProxy" />

            </property>

            </bean>

            <!—spring對Service層的代理-->

            <bean id="companyManageProxy"

            class="org.springframework.aop.framework.ProxyFactoryBean">

            <property name="proxyInterfaces">

            <value>com.vstsoft.querycompany.service.CompanyManage</value>

            </property>

            <property name="target">

            <ref bean="companyManageTarget" />

            </property>

            </bean>

            <!—配置struts訪問,把service層注入到action里面-->

            <bean name="/company"

            class="com.vstsoft.querycompany.web.action.CompanyAction" singleton="false">

            <property name="companyManage">

            <ref local="companyManageProxy" />

            </property>

            </bean>

            二.把事務放置在了Service層:

            <!—jtaTransactionManager-->

            <bean id="jtaTransactionManager"

            class="org.springframework.transaction.jta.JtaTransactionManager" />

            <!—DAO層接口實現-->

            <bean id="companyDAOTarget"

            class="com.vstsoft.querycompany.dao.impl.CompanyDAOImpl">

            <property name="sessionFactory">

            <ref local="sessionFactory" />

            </property>

            </bean>

            <!—spring對DAO層的代理-->

            <bean id="companyDAOProxy"

            class="org.springframework.aop.framework.ProxyFactoryBean">

            <property name="proxyInterfaces">

            <value>com.vstsoft.querycompany.dao.CompanyDAO</value>

            </property>

            <property name="target">

            <ref bean="companyDAOTarget" />

            </property>

            </bean>

            <!—業務層接口實現,把DAO注入到Service里面-->

            <bean name="companyManageTarget"

            class="com.vstsoft.querycompany.service.impl.CompanyManageTarget">

            <property name="companyDAO">

            <ref bean="companyDAOProxy" />

            </property>

            </bean>

            <!—spring代理業務層的事務管理-->

            <bean id="companyManageProxy"

            class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">

            <property name="transactionManager">

            <ref local="jtaTransactionManager" />

            </property>

            <property name="transactionAttributes">

            <props>

            <prop key="set*">PROPAGATION_REQUIRED</prop>

            <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>

            </props>

            </property>

            <property name="target">

            <ref bean="companyManageTarget" />

            </property>

            </bean>

            <!—配置struts訪問,把service層注入到action里面-->

            <bean name="/company"

            class="com.vstsoft.querycompany.web.action.CompanyAction" singleton="false">

            <property name="companyManage">

            <ref local="companyManageProxy" />

            </property>

            </bean>

            在service層的接口實現CompanyManageImpl里面有個setData方法:按順序執行數據查詢,數據刪除,數據插入數據庫行為,如果哪一步出異常(運行時異常),事務回滾,只有所有行為都沒成功,事務提交。
              回復  更多評論   

           
          Copyright © 智者無疆 Powered by: 博客園 模板提供:滬江博客


             觀音菩薩贊

          主站蜘蛛池模板: 茶陵县| 湖北省| 黄龙县| 杭锦旗| 廉江市| 图们市| 河南省| 津南区| 土默特右旗| 延津县| 永宁县| 陆良县| 武鸣县| 桂阳县| 班玛县| 彩票| 保山市| 万安县| 寿阳县| 潮州市| 汤阴县| 农安县| 白玉县| 开鲁县| 武陟县| 墨竹工卡县| 济阳县| 新密市| 即墨市| 三都| 南宫市| 内丘县| 富顺县| 海原县| 龙海市| 大兴区| 黎川县| 武穴市| 明水县| 宁德市| 行唐县|