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

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

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

    samtiger


    QQ:418148757
    Name:yangchuan
    數據加載中……
    關于spring+hibernate的事務的簡單配置(這里用的mysql數據庫)
       今天晚上有同事提到這個spring的事務配置,其實我也就知道兩種最簡單的配置。恩,還是寫個例子測試一下吧。環境是:spring2.04+hibernate3.1吧

      

    首先,我使用的mysql,設置mysql為InnoDB類型。
    事務管理的控制應該放到業務邏輯層。你可以寫個處理業務邏輯的JavaBean,在該JavaBean中調用DAO(或則是HibernateTemplate()的crud操作),然后把該Bean的方法納入spring的事務管理。

    方法一:xml文件定義如下:
            //聲明事務管理器
     <bean id="transactionManager"
      class="org.springframework.orm.hibernate3.HibernateTransactionManager">
      <property name="sessionFactory" ref="sessionFactory" />
     </bean>
            //聲明事務代理,使用抽象屬性(abstract="true") 方便所有的業務類都擁有這個事務代理
     <bean id="baseTransactionProxy"
      class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
      abstract="true">
      <property name="transactionManager" ref="transactionManager" />
      <property name="transactionAttributes">
       <props>
        <prop key="add*">PROPAGATION_REQUIRED,-Exception</prop>
       </props>
      </property>
     </bean>

           
     <bean id="userManager" parent="baseTransactionProxy">
      <property name="target" >
                              //具體的實現了業務邏輯的JavaBean
       <bean class="org.zdpuyao.srm.service.imp.UserManageImp">
        <property name="sessionFactory">
         <ref local="sessionFactory" />
        </property>
       </bean>
      </property>
     </bean>
    org.zdpuyao.srm.service.imp.UserManageImp就是我們的實現業務邏輯的JavaBean。我們通過parent元素聲明其事務支持。
    在測試的時候,就用
    UserManage um=(UserManage) context.getBean("userManager");來取得bean對象(注意上邊的"userManager"配置)

    具體類
    package org.zdpuyao.srm.service.imp;

    public class UserManageImp extends HibernateDaoSupport implements UserManage {

     public void addUser(Object obj) {
      
      TblBsDepartmentType dept; //=(TblBsDepartmentType)temp.find("from TblBsDepartmentType").get(0);
      dept = new TblBsDepartmentType();
      dept.setBdtyName("java12");
      getHibernateTemplate().save(dept);
      
      ///throw new  ("ssss");
      //throw new RuntimeSQLException("sssss");
      
      /*TblBsUserType user = (TblBsUserType)obj;
      user.setTblBsDepartmentType(dept);
      temp.save(user);*/

     }

    }


    具體測試類:
    public class TestUser extends TestCase {

     protected void setUp() throws Exception {
      
      super.setUp();
     }
     
     private BeanFactory getFactory()
     {
      Resource res=new FileSystemResource("\\WebRoot\\WEB-INF\\applicationContext.xml");
      BeanFactory factory=new XmlBeanFactory(res);
      return factory;
     }
     private UserManage getUserManage()
     {
      BeanFactory factory=getFactory();
      UserManage um=(UserManage) factory.getBean("userManager");
      return um;
      
     }

     public void testAddUser() throws Exception {
       
      TblBsUserType user = new TblBsUserType();
      
      user.setButyId(Long.valueOf(12345645));
      user.setButyName("yangchuan");
      user.setButyPassword("12345");
      getUserManage().addUser(user);
      
      //excuteJDBCTranscation();
     }
    }



    ///////////////////////////////////////////
    方法二:xml文件定義如下:
        
        1: 第一步:
          
    <bean id="transactionManager"
      class="org.springframework.orm.hibernate3.HibernateTransactionManager">
      <property name="sessionFactory" ref="sessionFactory" />
     </bean>


        1: 第二步:
     <bean id="userManager"
      class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
      abstract="false">
      <property name="transactionManager" ref="transactionManager" />
      <property name="target">
       <ref local="userManagerimp" />
      </property>
      <property name="transactionAttributes">
       <props>
        <prop key="add*">PROPAGATION_REQUIRED,-Exception</prop>
       </props>
      </property>
     </bean>

     

        1: 第三步:
     <bean id="userManagerimp"
      class="org.zdpuyao.srm.service.imp.UserManageImp">
      <property name="sessionFactory">
       <ref local="sessionFactory" />
      </property>
     </bean>

    org.zdpuyao.srm.service.imp.UserManageImp就是我們的實現業務邏輯的JavaBean。
    在測試的時候,就用
    UserManage um=(UserManage) context.getBean("userManager");來取得bean對象

    具體類
    package org.zdpuyao.srm.service.imp;

    public class UserManageImp extends HibernateDaoSupport implements UserManage {

     public void addUser(Object obj) {
      
      TblBsDepartmentType dept; //=(TblBsDepartmentType)temp.find("from TblBsDepartmentType").get(0);
      dept = new TblBsDepartmentType();
      dept.setBdtyName("java12");
      getHibernateTemplate().save(dept);
      
      ///throw new  ("ssss");
      //throw new RuntimeSQLException("sssss");
      
      /*TblBsUserType user = (TblBsUserType)obj;
      user.setTblBsDepartmentType(dept);
      temp.save(user);*/

     }

    }
    具體測試類:
    public class TestUser extends TestCase {

     protected void setUp() throws Exception {
      
      super.setUp();
     }
     
     private BeanFactory getFactory()
     {
      Resource res=new FileSystemResource("\\SRMnew\\WebRoot\\WEB-INF\\applicationContext.xml");
      BeanFactory factory=new XmlBeanFactory(res);
      return factory;
     }
     private UserManage getUserManage()
     {
      BeanFactory factory=getFactory();
      UserManage um=(UserManage) factory.getBean("userManager");
      return um;
      
     }

     public void testAddUser() throws Exception {
       
      TblBsUserType user = new TblBsUserType();
      
      user.setButyId(Long.valueOf(12345645));
      user.setButyName("yangchuan");
      user.setButyPassword("12345");
      getUserManage().addUser(user);
      
      //excuteJDBCTranscation();
     }
    }

    本人才疏學淺,涉java不深,如果以上配置有什么錯誤或不足的地方,請您指出,將  不甚感激!如果還有別的配置,也請共享一份給我,將感激不盡。

      說明:如果你的代碼報:java.lang.ClassCastException: $Proxy7 cannot be cast to 。。。。。的錯誤;
    解決方式有兩種:
     一種: 為org.springframework.transaction.interceptor.TransactionProxyFactoryBean的bean配置一個property屬性:proxyTargetClass ,并設置其值為true
    另一種:就是為你的dao類寫一個接口類,就是說讓你的dao必須實現一個接口。

    posted on 2007-09-28 00:04 sam.chuan.yang 閱讀(2441) 評論(1)  編輯  收藏

    評論

    # re: 關于spring+hibernate的事務的簡單配置(這里用的mysql數據庫) 2009-08-26 00:31 sss

    這兩個方法一樣的啊
      回復  更多評論    

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


    網站導航:
     
    主站蜘蛛池模板: 污污视频网站免费观看| 亚洲sss综合天堂久久久| 丁香六月婷婷精品免费观看| 国产精品成人无码免费| 亚洲人成电影网站色| 成人黄软件网18免费下载成人黄18免费视频 | 中文字幕亚洲电影| 一级成人毛片免费观看| 中文字幕亚洲第一| 免费无码av片在线观看 | 亚洲区小说区图片区| 一级做a爰全过程免费视频毛片| 亚洲乱码国产一区网址| 成全视成人免费观看在线看| 亚洲AV无码成人精品区在线观看 | 亚洲人成网站999久久久综合| 成年女人毛片免费视频| 亚洲A∨精品一区二区三区下载| 成人伊人亚洲人综合网站222| 一级免费黄色毛片| 亚洲av无码精品网站| 在线看片v免费观看视频777 | 日韩亚洲人成在线综合日本| 热99RE久久精品这里都是精品免费| 人人狠狠综合久久亚洲88| 18女人腿打开无遮掩免费| 中文字幕乱码亚洲精品一区| 成人最新午夜免费视频| 一级毛片大全免费播放下载| 亚洲无删减国产精品一区| 成人性生交视频免费观看| 国产99视频精品免费视频76| 亚洲AV无码一区二区二三区入口 | 免费v片在线观看无遮挡| 青柠影视在线观看免费| 色婷五月综激情亚洲综合| 亚洲av手机在线观看| 日本免费人成网ww555在线| 亚洲欧美日本韩国| 国产av无码专区亚洲av桃花庵| 中国在线观看免费国语版|