WebService中事务的多种控制方法

 

public class UpdateBussiness extends HibernateDaoSupport implements Iupdate { 

         public String NewBrda(String mzhm, Long brxz, String brxm, Integer brxb,
   String csny, String hkdz, String jtdh, String bxhm,String czgh) {  
 

 //开启一个独立的事务,需独立取得rowid并需将结果马上写回数据库.(手动管理)

 Session session = getHibernateTemplate().getSessionFactory().openSession();

  Transaction tran = session.beginTransaction();

  Long ll_rowid;

  GyIdentity iden = (GyIdentity)session.load(GyIdentity.class,"MS_BRDA",LockMode.UPGRADE);

  ll_rowid = iden.getValue();

  ll_rowid = ll_rowid + 1;

  iden.setValue(ll_rowid);

  try{
   session.saveOrUpdate(iden);
   tran.commit();
  }catch(Exception ex){
   tran.rollback();
   log4j.error(mzhm+","+brxm+":"+errlist.getError_1());
   return "-1";
  }finally{
   session.clear();
   session.close();
  }
  //事务结束

  

  MsYgpjId  pjid = new MsYgpjId();
  pjid.setPjlx(new Long(3));
  pjid.setYgdm(czgh);


  MsYgpj ygpj = (MsYgpj)getHibernateTemplate().get(MsYgpj.class,pjid);

  if(ygpj==null){

   log4j.error(mzhm+","+brxm+":"+errlist.getError_3());

  //请一定注意以下语句,实现spring框架的自动事务管理时,对于根据需要返回结果,

   //不进行事务提交时,一定要清空hibernate缓存,

   //如不然,webservice成功调用结束后,缓存内的数据仍会写回数据库。
   getHibernateTemplate().clear(); 
   return "-3";
  } 

  getHibernateTemplate().update(ygpj);
  MsBrda brda = new MsBrda();
  brda.setBrid(ll_rowid);
  brda.setBrxb(new Long(brxb));
  brda.setBrxm(brxm);
  brda.setBrxz(brxz);
  brda.setBxhm(bxhm);
  brda.setCsny(date1);
  brda.setHkdz(hkdz);
  brda.setJtdh(jtdh);

  getHibernateTemplate().save(brda); //需进行自动事务管理

  return mzhm_new;;
 }
}

 

applicationContext.xml中自动事务管理的配置,如下:

    <bean id="UpdateBussiness" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">

       <property name="transactionManager" ref="transactionManager"/>

       <property name="target" ref="UpdateHib"/>

       <property name="transactionAttributes">

           <props>          

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

           </props>

       </property>

    </bean>            

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值