軟件藝術(shù)思考者  
          混沌,彷徨,立志,蓄勢...
          公告
          日歷
          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導(dǎo)航

          隨筆分類(86)

          隨筆檔案(85)

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

           
          本文的理解來自實(shí)際應(yīng)用程序。文件名是:applicationContext-hibernate1.xml
          熟悉spring-hibernate架構(gòu)的人對它肯定不陌生。它是由支持spring的組件在編程開始自動生成的,但我們不能總是停留在不管不問的狀態(tài)。否則對程序構(gòu)造就沒有更深一步的理解。
          如果理清applicationContext-hibernate1.xml的頭緒或者手工寫它,對于主動改進(jìn)程序肯定是有益的。
          我總結(jié)出來的順序是:
          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)
          以上三步是后面各項(xiàng)配置的基礎(chǔ)。從后面開始我們就開始真正的配置我們的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設(shè)置數(shù)據(jù)庫并發(fā)控制級別。例如
          <property name="transactionAttributes">
          ???<props>
          ????<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
          ????<prop key="save*">PROPAGATION_REQUIRED</prop>
          ???</props>
          7.循環(huán)第4到第6步即可配置所有需要配置的bean.
          本文不是摘抄,如果想轉(zhuǎn)摘,請注明出處:www.aygfsteel.com/zhanglijun33
          如果想要更詳細(xì)的資料可以給我留言。
          posted on 2006-07-06 11:29 智者無疆 閱讀(853) 評論(3)  編輯  收藏 所屬分類: about spring
          評論:
          • # re: Spring 應(yīng)用程序配置文件的核心理解  白白 Posted @ 2006-07-06 11:44
            寫的好啊,支持支持強(qiáng)烈支持!好樣的。  回復(fù)  更多評論   

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

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

            Spring配置事務(wù)在DAO層和業(yè)務(wù)邏輯層
            Spring配置事務(wù)在DAO層和Service層

            Spring通過AOP實(shí)現(xiàn)聲明式事務(wù)管理。通常通過TransactionProxyFactoryBean設(shè)置Spring事務(wù)代理。我們需要一個目標(biāo)對象包裝在事務(wù)代理中。這個目標(biāo)對象一般是一個普通Java對象的bean。當(dāng)我們定義TransactionProxyFactoryBean時,必須提供一個相關(guān)的 PlatformTransactionManager的引用和事務(wù)屬性。 事務(wù)屬性含有上面描述的事務(wù)定義。

            PlatformTransactionManager:

            HibernateTransactionManager需要一個SessionFactory的引用

            JtaTransactionManager

            一.把事務(wù)放置在了DAO層:

            <!—hibernateTransactionManager-->

            <bean id="transactionManager"

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

            <property name="sessionFactory">

            <ref local="sessionFactory" />

            </property>

            </bean>

            <!—DAO層接口實(shí)現(xiàn)-->

            <bean id="companyDAOTarget"

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

            <property name="sessionFactory">

            <ref local="sessionFactory" />

            </property>

            </bean>

            <!—spring對DAO層的事務(wù)代理-->

            <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>

            <!—業(yè)務(wù)層接口實(shí)現(xiàn),把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>

            二.把事務(wù)放置在了Service層:

            <!—jtaTransactionManager-->

            <bean id="jtaTransactionManager"

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

            <!—DAO層接口實(shí)現(xiàn)-->

            <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>

            <!—業(yè)務(wù)層接口實(shí)現(xiàn),把DAO注入到Service里面-->

            <bean name="companyManageTarget"

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

            <property name="companyDAO">

            <ref bean="companyDAOProxy" />

            </property>

            </bean>

            <!—spring代理業(yè)務(wù)層的事務(wù)管理-->

            <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層的接口實(shí)現(xiàn)CompanyManageImpl里面有個setData方法:按順序執(zhí)行數(shù)據(jù)查詢,數(shù)據(jù)刪除,數(shù)據(jù)插入數(shù)據(jù)庫行為,如果哪一步出異常(運(yùn)行時異常),事務(wù)回滾,只有所有行為都沒成功,事務(wù)提交。
              回復(fù)  更多評論   

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


             觀音菩薩贊

          主站蜘蛛池模板: 崇仁县| 武乡县| 桦川县| 蚌埠市| 华容县| 略阳县| 高邑县| 沙湾县| 宜宾县| 遂川县| 新源县| 社旗县| 太原市| 抚远县| 东海县| 北海市| 洪雅县| 双牌县| 南雄市| 嘉黎县| 肃北| 米泉市| 青龙| 合水县| 故城县| 宣汉县| 莲花县| 稷山县| 崇阳县| 平定县| 策勒县| 芦溪县| 柏乡县| 上高县| 张掖市| 缙云县| 剑阁县| 西充县| 洱源县| 临江市| 潍坊市|