webservice:WebService中事务的多种控制方法来源: 发布时间:星期四, 2008年10月16日 浏览:2次 评论:0
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
相关文章
读者评论
发表评论 |