<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
    數(shù)據(jù)加載中……
    關(guān)于spring+hibernate的事務(wù)的簡單配置(這里用的mysql數(shù)據(jù)庫)
       今天晚上有同事提到這個spring的事務(wù)配置,其實我也就知道兩種最簡單的配置。恩,還是寫個例子測試一下吧。環(huán)境是:spring2.04+hibernate3.1吧

      

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

    方法一:xml文件定義如下:
            //聲明事務(wù)管理器
     <bean id="transactionManager"
      class="org.springframework.orm.hibernate3.HibernateTransactionManager">
      <property name="sessionFactory" ref="sessionFactory" />
     </bean>
            //聲明事務(wù)代理,使用抽象屬性(abstract="true") 方便所有的業(yè)務(wù)類都擁有這個事務(wù)代理
     <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" >
                              //具體的實現(xiàn)了業(yè)務(wù)邏輯的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就是我們的實現(xiàn)業(yè)務(wù)邏輯的JavaBean。我們通過parent元素聲明其事務(wù)支持。
    在測試的時候,就用
    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就是我們的實現(xiàn)業(yè)務(wù)邏輯的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();
     }
    }

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

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

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

    評論

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

    這兩個方法一樣的啊
      回復(fù)  更多評論    

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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲av无码专区国产乱码在线观看| 精品少妇人妻AV免费久久洗澡| 国产亚洲精品成人AA片新蒲金| 美女隐私免费视频看| 国产hs免费高清在线观看| 亚洲精品人成网线在线播放va | 67pao强力打造高清免费| 亚洲av无码国产精品夜色午夜 | 亚洲最大免费视频网| 亚洲天堂福利视频| 一级女人18毛片免费| 亚洲已满18点击进入在线观看| 成人黄软件网18免费下载成人黄18免费视频 | 成人在线视频免费| 国产精品亚洲专区无码WEB| 夜色阁亚洲一区二区三区 | 成全在线观看免费观看大全 | 日韩精品免费电影| 国产成人不卡亚洲精品91| 亚洲国产精品毛片av不卡在线| 国产黄色片免费看| 亚洲性天天干天天摸| 免费看少妇作爱视频| 一级白嫩美女毛片免费| 国产av天堂亚洲国产av天堂| 最新黄色免费网站| 久久精品熟女亚洲av麻豆| 亚洲国产成人爱av在线播放| 免费看搞黄视频网站| 亚洲国产系列一区二区三区 | 91大神亚洲影视在线| 成年女人毛片免费播放视频m| 美女裸免费观看网站| 亚洲AV成人无码久久精品老人| 日韩欧美一区二区三区免费观看| 黄色毛片免费网站| 久久亚洲国产精品成人AV秋霞| 日韩免费高清一级毛片在线| 免费在线黄色电影| 亚洲中文字幕久久精品无码VA| 亚洲国产日韩在线视频|