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

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

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

    posts - 495,  comments - 11,  trackbacks - 0

    2聲明式管理Hibernate本地事務

    Spring提供了一種統一的IoC方式來管理Hibernate事務(本地或者分布式事務)。從Spring接手hibernate.cfg.xmlHibernate的基本配置文件)起,Hibernate事務便輕易交由Spring拖管了。

    說明:在上一章介紹IBatisDAO的時候,曾經針對事務和DAO的關系簡單的進行了探討。通常DAO的粒度應該都是比較細的,即它們只是一些單步的CRUD操作,所以就需要引入一個業務對象來包裹DAO,這樣,就可以在業務對象的基礎上,提供更粗粒度的事務劃分了(比如跨越多個DAO的方法調用進行事務管理)。

    為了能對DAO進行更粗粒度的事務控制,需要為其增加一個業務對象。下面給出了該業務對象的接口和實現,如代碼10.25~10.26所示。

    代碼10.25 StockFacade.java

    package chapter10.spring.hibernate;

    import chapter10.hibernate.domain.Category;

    public interface StockFacade {

    public void business1(Category category);

    public void someOtherBusiness();

    }

    代碼10.26 BusinessFacadeImpl.java

    public class BusinessFacadeImpl implements StockFacade {

    private StockDao stockDao;

    public void setStockDao(StockDao stockDao) {

    ??? this.stockDao = stockDao;

    }

    public void business1(Category category) {

    ??? stockDao.createCategoryCascade(category);

    ??? stockDao.retrieveProductBy(category);

    ??? stockDao.deleteCategoryCascade(category);

    }

    public void someOtherBusiness() {

    ??? //other implemention

    }

    }

    接著給出關于事務策略的配置,其中使用了Spring針對Hibernate3給出的HibernateTransactionManager,它提供了Hibernate的本地事務管理策略,如代碼10.27所示。

    代碼10.27 transaction-context.xml

    <?xml version="1.0" encoding="UTF-8"?>

    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"

    "http://www.springframework.org/dtd/spring-beans.dtd">

    <beans>

    <bean id="transactionManager"

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

    ??? <property name="sessionFactory" >

    ????? <ref bean="sessionFactory" />

    ??? </property>

    </bean>

    <bean id="business"

    class="chapter10.spring.hibernate.BusinessFacadeImpl">

    ??? <property name="stockDao">

    ????? <ref bean="stockDao"/>

    ??? </property>

    </bean>

    <bean id="businessProxy"

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

    ??? <property name="transactionManager">

    ????? <ref bean="transactionManager" />

    ??? </property>

    ??? <property name="target">

    ??? ?? <ref bean="business" />

    ??? </property>

    ??? <property name="transactionAttributes">

    ????? <props>

    ??????? <!--運行在當前事務范圍內,如果當前沒有啟動事務,那么創建一個新的事務-->

    ??????? <prop key="business*">PROPAGATION_REQUIRED</prop>

    ??????? <!--運行在當前事務范圍內,如果當前沒有啟動事務,那么拋出異常-->

    ??? ???? <prop key="someOtherBusiness*">PROPAGATION_MANDATORY</prop>

    ????? </props>

    ??? </property>

    </bean>

    </beans>

    代碼10.28 HibernateTransactionUsageTest.java

    package chapter10.spring.hibernate;

    import org.springframework.context.ApplicationContext;

    import org.springframework.context.support.ClassPathXmlApplicationContext;

    import chapter10.hibernate.domain.Category;

    import junit.framework.TestCase;

    public class HibernateTransactionUsageTest extends TestCase {

    private StockFacade stockBusiness;

    protected void setUp() throws Exception {

    ??? String path = "ch10/spring/hibernate/";

    ??? ApplicationContext ctx = new ClassPathXmlApplicationContext(

    ???????? new String[]{path+"dataAccessContext-support-local.xml",

    ???????????? path+"transaction-context.xml"});

    ??? stockBusiness = (StockFacade)ctx.getBean("businessProxy");

    }

    public void testTransctionUsage() {

    ??? Category category = new Category("RABBIT");

    ??? category.setName("Rabbit");

    ??? category.setDescn("Desciption of Rabbit");

    ??? stockBusiness.business1(category);

    }

    }

    posted on 2009-07-27 01:51 jadmin 閱讀(73) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 男女交性无遮挡免费视频| 亚洲中文字幕无码av永久| 亚美影视免费在线观看| 亚洲黄黄黄网站在线观看| 男人扒开添女人下部免费视频| 日本免费无遮挡吸乳视频电影| 亚洲欧美日韩久久精品| 日韩在线免费看网站| 国产综合成人亚洲区| 国产无遮挡又黄又爽免费视频| 色偷偷亚洲男人天堂| 天堂亚洲免费视频| 国产免费MV大全视频网站| 久久精品国产亚洲av成人| 毛片免费全部播放无码| 亚洲人成在线免费观看| 成人免费无毒在线观看网站| WWW国产亚洲精品久久麻豆| 亚洲一级特黄大片无码毛片| 中文字幕一区二区三区免费视频| 亚洲AV日韩AV永久无码免下载| 91成人在线免费视频| 亚洲国产日韩精品| 亚洲?V无码乱码国产精品| 久久国产美女免费观看精品 | 99亚洲男女激情在线观看| 亚洲AⅤ永久无码精品AA| 国产线视频精品免费观看视频| 4444亚洲国产成人精品| 在线观看免费成人| 男女一边桶一边摸一边脱视频免费 | 97人伦色伦成人免费视频| 日日摸日日碰夜夜爽亚洲| 亚洲区小说区激情区图片区| 精品久久8x国产免费观看| 美女露隐私全部免费直播| 亚洲AV乱码一区二区三区林ゆな| 日韩视频在线精品视频免费观看| 色吊丝免费观看网站| 亚洲理论在线观看| 亚洲色图综合在线|