JAVA技巧(WebService中事务的多种控制方法)
public类UpdateBussiness扩展HibernateDaoSupport实现Iupdate {
public String new brda(String mzhm,Long brxz,String brxm,Integer BRXB,
String CSNY,String HKDZ,String JTDH,String BXHM,String CZGH) {
//Examda提示:启动独立事务,独立获取rowid并立即将结果写回数据库。(手动管理)
session session = getHibernatetemplate()。getsessionfactory()。opensession();
Transaction tran = session . begin Transaction();
Long ll _ rowid;
gy identity ident =(gy identity)session . load(gy identity . class," MS_BRDA ",LockMode。升级);
ll _ rowid = iden . getvalue();
ll _ rowid = ll _ rowid+1;
iden . setvalue(ll _ rowid);
try {
session . saveourupdate(iden);
tran . commit();
} catch(Exception ex){
tran . roll back();
log4j.error(mzhm+","+brxm+":"+errlist . geterror _ 1());
return“-1”;
}最后{
session . clear();
session . close();
}
/事务结束
MsYgpjId pjid = new MsYgpjId();
pjid . setp jlx(new Long(3));
pjid . setygdm(czgh);
MsYgpj ygpj =(MsYgpj)gethibernate template()。get(MsYgpj.class,pjid);
if(ygpj = = null){
log4j . error(mzhm+","+brxm+":"+errlist . geterror _ 3());
//请注意下面的语句。在实现spring框架的自动事务管理时,
/当事务没有提交时,必须清空空hibernate的缓存。
//否则,在webservice调用成功后,缓存中的数据仍然会被写回数据库。
getHibernateTemplate()。clear();
return“-3”;
}
getHibernateTemplate()。更新(ygpj);
MsBrda brda = new MsBrda();
brda . set brid(ll _ rowid);
brda . setbrxb(new Long(brxb));
brda . set brxm(brxm);
brda . setbrxz(brxz);
brda . setbxhm(bxhm);
brda . setcsny(date 1);
brda . sethkdz(hkdz);
brda . setjtdh(jtdh);
getHibernateTemplate()。保存(brda);//需要自动事务管理
return mzmhm _ new;;
}
}
application context . XML中自动事务管理的配置如下:
Promotion _ required
0条评论