现在的位置: 首页 > 综合 > 正文

WebService中事务的多种控制方法

2018年02月07日 ⁄ 综合 ⁄ 共 1912字 ⁄ 字号 评论关闭

 

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>            

 

抱歉!评论已关闭.