<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

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

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


    網站導航:
     
    主站蜘蛛池模板: 亚洲综合国产一区二区三区 | 亚洲精品国精品久久99热一| 亚洲AV永久无码精品放毛片| 国产精品爱啪在线线免费观看| 亚洲一区二区三区夜色| 日韩精品人妻系列无码专区免费 | 亚洲AV成人潮喷综合网| 午夜亚洲国产精品福利| 丁香亚洲综合五月天婷婷| 一本岛v免费不卡一二三区| 国产AV无码专区亚洲AV漫画| 国产一级在线免费观看| 亚洲国产香蕉碰碰人人| 亚洲免费福利视频| 亚洲欧洲日韩国产一区二区三区| 57pao一国产成永久免费| 激情亚洲一区国产精品| 日韩一级视频免费观看| 一本久久A久久免费精品不卡| 亚洲人成网7777777国产| 久久精品毛片免费观看| 亚洲日韩精品无码AV海量| 国产男女性潮高清免费网站 | 亚洲av无码无在线观看红杏| 91人人区免费区人人| 亚洲色最新高清av网站| 久久久久亚洲精品天堂久久久久久| 少妇性饥渴无码A区免费| 亚洲人成免费电影| 午夜亚洲国产成人不卡在线| 久草免费福利视频| 亚洲中文无码亚洲人成影院| 久久亚洲AV无码西西人体| 91久久精品国产免费直播| 国产亚洲人成在线影院| 亚洲av无码av制服另类专区| 一个人看www在线高清免费看| 人妻免费久久久久久久了| 亚洲成AV人片久久| 亚洲va中文字幕无码| 亚欧免费视频一区二区三区 |