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>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。