<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 閱讀(2447) 評論(1)  編輯  收藏

    評論

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

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

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


    網站導航:
     
    主站蜘蛛池模板: 亚洲综合激情五月色一区| 精品久久久久久无码免费| 亚洲AV无码一区二区三区DV| 日韩成全视频观看免费观看高清 | 黑人粗长大战亚洲女2021国产精品成人免费视频 | eeuss在线兵区免费观看| 亚洲已满18点击进入在线观看| 亚洲国产精品无码久久一区二区| 免费A级毛片在线播放不收费| 免费国产作爱视频网站| 久久福利青草精品资源站免费| 亚洲AV日韩综合一区| 亚洲人成7777影视在线观看| 久久久亚洲精品无码| 亚洲av成人一区二区三区在线观看| 无码国产精品久久一区免费 | 久久精品a亚洲国产v高清不卡| 国产a v无码专区亚洲av| 国产精品成人免费综合| 成年女人免费视频播放体验区| 日韩免费高清大片在线| 在线观看免费无码专区| 免费在线黄色电影| 国产精品内射视频免费| 成年大片免费高清在线看黄| 亚洲精品天堂无码中文字幕| 国产精品亚洲精品观看不卡| 亚洲熟妇无码爱v在线观看| 精品无码一区二区三区亚洲桃色| 亚洲va久久久噜噜噜久久男同| 亚洲午夜国产精品无码| 久久亚洲国产精品五月天婷| 成人亚洲性情网站WWW在线观看| 国产免费私拍一区二区三区| 四虎永久在线精品视频免费观看| 成人永久福利免费观看| 国产在线观看免费完整版中文版| 国产资源免费观看| 亚洲国产小视频精品久久久三级| 亚洲第一区精品观看| 亚洲综合AV在线在线播放|